2012-03-13 4 views
0

私はこのような私は、アプリケーションディレクトリ内の利用可能なレール3.0.10アプリケーション、持っている:Rails 3のアセットディレクトリは、CNAMEルートとappサブディレクトリから同時にアクセスできますか?

https://apps.example.com/myRails3App 

サーバが乗客を使用してRHEL 5であるが。ボックスの外では、アプリケーションは素晴らしい動作し、私は範囲内で私のルートをラップする必要はありませんでした。アプリケーションを再デプロイし、私はアプリのからアプリケーションを訪れたときに、サーバーを再起動した後、今

http://great.vanityurl.com 

は、その後、私はこのように、アプリケーションを指すように新しいドメインからのCNAMEエイリアスを設定します。 example.com/myRails3App「stylesheet_link_tag」(または「javascript_include_tag」)から呼び出されたすべてのアセットは、正しい「apps.example.com/myRails3App/stylesheets」ではなく「apps.example.com/stylesheets」のアセットを探しています(標準のリンクタグは正しく機能していますが)。

一方、great.vanityurl.com/stylesheetsへの参照が正しく解決されるため、アプリケーションはvanityurlから素晴らしいと思われます。

私がRailsの「relative_url_root」のようなものを使用する必要があることと思われるが、これは、レール(私の知る限り理解することができる午前として)3.0.10で利用できないのは勿論である。

私が何をすべき元の場所(apps.example.com/myRails3App)または仮想URL(great.vanityurl.com)を経由して訪問したかどうかにかかわらず、アプリケーションが同じように見えて機能することを確認しますか?

答えて

0

Winfieldの答えはRails 3.1ではうまくいくが、3.0では 'config.assets.prefix ='が嫌いだ。それは、最終的な解決策ではありませんでしたしながら、

はありがたいことに、彼は「= config.action_controller.asset_host」で正しい方向に私を指摘した。asset_host =用のRails 3.0のAPIをチェックした後、私は= asset_pathを発見しました。

私はapplication.rbでこれを入れてしまった:へのすべての資産の通話が可能、myRails3App /公共/ {app_root} /公衆から{app_root}へのシンボリックリンクを生成

config.action_controller.asset_path = proc { |asset_path| 
     if (Rails.env != "development_local") and (!asset_path.starts_with?("/myRails3App")) 
     "/myRails3App#{asset_path}" 
     else 
     asset_path 
     end 
    } 

展開時、私は私のカピストラーノスクリプトを持っていますたとえば、アプリケーションディレクトリがrであるURLからユーザーが訪問しているかどうかにかかわらず、myRails3App/stylesheets等しかった。

この解決策は汚れているように感じますが、機能します。

私のアプリケーションを機能させる手助けをしてくれたWinfieldさん、ありがとうございます。

2

組み合わせ:

config.action_controller.asset_host = 'apps.example.com' 
config.assets.prefix = "/myRails3App" 

宛先あなたが言及しているRailsアセットヘルパーから生成されたURLを直接制御します。

関連する問題