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