1

Rails 3.1 アプリはローカルでは問題なく動作しますが、Heroku で実行すると、vendors/assets/javascripts手動で参照しても、Rails がディレクトリ内の JavaScript を見つけられないことがログに示されます。

私は plupload-rails3 gem を使用しています。gem の JavaScript は Heroku に読み込まれませんが、ローカルの開発マシンでは問題なく読み込まれます。

私の assets/javascripts/application.js には次のものがあります。

//= require_tree ../../../vendor/assets/javascripts/plupload-rails3
//= require_tree ../../../vendor/assets/stylesheets/plupload-rails3
//= require_tree ../../../vendor/assets/images/plupload-rails3

Heroku でアプリを実行すると、Rails がロードしようとして失敗し、plupload javascript のそれぞれで失敗したことがログに示されます。トークン識別子は次のとおりです。

ActionController::RoutingError ([GET] "/assets/plupload-rails3/plupload/js/plupload.full-f4741a878138cea127e6b38b6a08cf12.js" に一致するルートはありません):

したがって、plupload ウィジェットは Heroku のページには表示されません (ただし、ローカルで実行すると表示されます)。

ただし、その場所を (ID トークンなしで) 手動で参照すると、次のようになります。

http://MYAPPNAME.herokuapp.com/assets/plupload-rails3/plupload/js/plupload.full.js ファイルが表示されます。

また、アセットをローカルでプリコンパイルしてから、Heroku にプッシュしても同じ結果が得られました。

そのため、Rails on Heroku がベンダー/アセット パイプラインにアクセスすると、アプリの何かが壊れています。

(私はconfig.assets.compile = trueproduction.rb ファイルに持っています。false の元の設定により、プリコンパイル済みアセットが見つからなかったときにアプリがクラッシュしました。少なくとも今はクラッシュしませんが、javascript ウィジェットは無視されます。)

4

1 に答える 1

0

Application.js は javascript のマニフェスト ファイルです。画像や CSS を含めたくありません。vendor/assets/javascripts は、検索対象のパスに既に含まれているはずなので、以下を含めるだけです。

//= require_tree ./plupload-rails3

編集: 同様に、css を application.css に含めることができます。画像をマニフェストに含める必要はありません。

詳しくは、Rails ガイド ( http://guides.rubyonrails.org/asset_pipeline.html ) と Ryan Bates Railscast ( http://railscasts.com/episodes/279-understanding-the-asset-pipeline ) をご覧ください。

Edit2: 宝石を調べたところ、実行しましたか

bundle exec rake plupload_rails3:install_assets

アセットをインストールするには?そうでない場合は、それを実行してから、上記のコードを試してください。

于 2012-04-10T20:07:21.510 に答える