15

アプリケーションが次のようなベースURLで実行されている環境にデプロイすることはわかっています。

http://someserver/mydepartment/myapp

私の開発環境は、デフォルトのRails構成を使用するように設定されています。これは次のようになります。

http://localhost:3000/myapp

このデプロイメントパスを開発環境でモデル化したいと思います。つまり、次のようなベースURLを使用して開発したいと思います。

http://localhost:3000/mydepartment/myapp

そうすれば、すべてのURLを「/」を基準にして作成でき、両方の環境で機能します。

アプリケーションが開発環境でこのパスに存在するように変更するにはどうすればよいですか?

私が見つけた解決策は、私にはうまくいきません:

  • scopeinの設定はroutes.rb、の静的コンテンツでは機能しないようですpublic
  • Apacheの書き換え機能を使用します。開発ボックスにApacheをインストールしたくありません。理想的には、ソリューションはWEbrickで機能しますが、Mongrelもほとんど機能しているようです(MongrelとRuby 1.9.2にはいくつかの問題があります)。
  • relative_url_rootRails3では機能しない設定および同様の提案。
  • CSS / JavaScriptを動的に生成し、パスを調整して開発環境と本番環境の間で補正します。
4

3 に答える 3

16

Railsアプリのラック構成を別のbase_uriにマッピングしてみることができます。あなたがする必要があるのは、マップブロックで既存の'run'コマンドをラップすることです

Railsのconfig.ruファイルでこれを試してみてください。

map '/mydepartment' do
    run Myapp::Application
end

これで、「rails server」を実行すると、アプリはlocalhost:3000/mydepartmentにあるはずです。これで望ましい結果が得られるかどうかはわかりませんが、試してみる価値はあります。

于 2011-04-14T06:07:23.423 に答える
6

config.action_controller.relative_url_rootRails 3.1アプリをApacheのサブディレクトリにデプロイして、存在しなくなったものを置き換える方法は次のとおりです。

config/routes.rb

scope 'my_subdir' do
  # all resources and routes go here
end

Apache構成ファイル:

Alias /my_subdir /var/www/my_subdir/public
<Location /my_subdir>
  SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir"
  PassengerAppRoot /var/www/my_subdir
</Location>

そして、すべてのアセットを自動的にポイントするなど、機能するはず/my_subdirです。

于 2011-09-09T21:57:39.070 に答える
-1

config/environment.rbの最後に以下の行を追加します

ActionController::Base.relative_url_root = "/mydepartment"
于 2011-04-09T05:37:35.603 に答える