2

JRuby on Rails 3.1.6アプリケーションがあり、それをWARファイルとしてTomcat7にデプロイしたいと思います。戦争を生成するために、私はウグイスを使用します。

アプリケーションをサーバーにデプロイでき、すべてが実行されています。ただし、生成されたリンクまたはリダイレクトフォーム/users/sign_inは、コンテキストパスが無視されるため、機能しないように工夫されています。

私は相対URLルートを次のように設定しようとしました:

config.action_controller.relative_url_root = '/foo'

しかし、メソッドが見つかりませんでした。(これについてもENV変数を試しましたが、何も起こりませんでした)

で使用しようとしscope '/foo'ましたroutes.rbが、これも機能しません。

私もこれを自分の中に追加しようとしましたconfig.ru

map '/foo' do
  run Foo::Application
end 

ただし、config.ruファイルはWARファイルに含まれたり、何らかの方法で使用されたりすることはありません。


tomcatでVirtualHostなどを生成できません。アプリケーションをWARファイルとしてデプロイする権限しかありません。Railsアプリケーションに特定のサブディレクトリ(コンテキストパス)で実行されていることを通知して、Rails 3.1.6内で機能するすべての生成されたリンクやリダイレクトなどにこれを追加する方法はありますか?

4

1 に答える 1

2

Deviseのように聞こえますが、リダイレクトがどのように発行されているかを確認しましたか?アクションから次のようなことをすると仮定すると、機能するはずです。

def index
  redirect_to :action => "hello"
end

jruby-rack(あなたがいるときに含まれる)は、アプリケーションが/warbleとは異なるサーブレットコンテキストパス内で実行されている場合を正しく処理します。物事を機能させるために行った「ハック」を元に戻し、リダイレクトされたコードを調べることをお勧めします...たとえば、完全なURLであると想定されるため、「機能しない」(コンテキストパスのプレフィックス)などのコード道。redirect_to "/home/goodbye"

Railsアプリケーションのconfig.ru場合、Warblerはそれをコピーしません。したがって、RailsをプレーンなRackアプリケーションと区別できます(jruby-rackはRailsへのフックを増やして、Tomcatなどのサーブレットコンテナーでシームレスなエクスペリエンスを提供します)。

于 2012-07-30T11:03:35.980 に答える