2011-09-03 9 views
9

"/ r"のような特定のディレクトリでRails 3.1アプリケーションを実行するように設定するにはどうすればよいですか?サブディレクトリにRails 3.1アプリケーションを配備する方法

私はconfig.ruで試してみました:

map '/r' do 
    run Debtor::Application 
end 

が、それだけで返さ:それが動作するように取得するには、「見つかりません/ R」

を私はスコープ内のすべてのルートを囲む必要がありました:

scope '/r' do 
    #routes 
end 

および/ applcation.rb

config.assets.prefix = "/r/assets" 
を設定への次の行を追加します0

と私のjquery ui cssファイルを/ stylesheetsから/ r/stylesheetsに移動します。

これは複雑すぎるようです。簡単な方法はありませんか? config.ruの設定がうまくいかないのはなぜですか?

私の使用例は、ワードプレスサーバーのためのレールパワードajaxバックエンドを持つことです。

答えて

6

あなたは乗客の下で走っていますか?

次にRailsBaseURIはおそらくあなたが望むものです。

https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-sub-uri

は乗客の下で実行していない場合は、下に配置されているかを示すためにあなたの質問を更新してください。

+0

お返事ありがとうございます。はい、私は乗客を使用しています。私はより単純な解決策を探しています。 – Peder

+0

あなたのApache設定ファイルの1行より単純ですか?私はあなたがそれよりずっと簡単になることができるかどうかはわかりません。私は混乱して申し訳ありません。 – Doon

+0

1行の設定でこれを行うにはどうすればよいですか?ドキュメントルートのサブパスからrailsプロジェクトのパブリックディレクトリへのシンボリックリンクを作成する必要があるようです。 – Peder

3

Rails 3.1アプリをApacheのサブディレクトリに配備する方法は、もう存在しないconfig.action_controller.relative_url_rootを置き換えてください。 config/routes.rb

Apacheの設定ファイルで
scope 'my_subdir' do 
    # all resources and routes go here 
end 

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にすべてのあなたの資産を指し含めて、動作するはずです。

+0

これは本当にパブリックディレクトリのアセットとファイルに対して機能しますか? – Peder

+0

あなたの資産が 'app/assets'フォルダにあるときに動作します。しかし、 'Alias'キーワードがパブリックフォルダ内のフォルダを直接指しているため、パブリックディレクトリのアセットとファイルに対しても動作する必要があります。それが動作すれば教えてください。 –

4

私のために働いたのは、アプリケーションの 'public'フォルダ(/ home/otheruser/current/publicの別のユーザーの下にセットアップ)にサブURI(/ info)のシンボリックリンクを作成したことでした。

Alias /info /home/myapp/current/public 
<Location /info> 
    PassengerAppRoot /home/myapp/current 
    RackEnv production 
    RackBaseURI /info 
</Location> 

ないスコープのルート、無資産の接頭辞の設定:

ln -s /home/myapp/current/public /home/mysite/public_html/info 

は、その後、私は、サイトのためのVirtualHostエントリの内部に、この構成を挿入します。

+0

ベストセラー!もし私ができるなら、私は再びこの答えを出したいと思っています:) – Ali

+0

これは最もクリーンな解決策です。ありがとう:) – n3rve

関連する問題