3

Rails 3.2.8 を使用しています。アプリがデプロイされたら、javascript を含むビューにアクセスします。

<%= javascript_include_tag "epiceditor" %>

Heroku は次のログで失敗します。

ActionView::Template::Error (/app/app/assets/javascripts/epiceditor.js.erb has already been required

循環依存を引き起こす可能性のある参照をチェックしたり、別の場所に含まれている場合に備えて単純に削除したりするなど、いくつかの可能な解決策を確認しましたが、そうではありません。したがって、それを含めると、この「既に含まれているエラー」が表示されます。そうしないと、ファイルはまったく含まれません。

私のconfig/application.rgにはこれがあります

    config.assets.initialize_on_precompile = false

そして、applications.js には次のようなものがあります。

//= require jquery
//= require jquery_ujs
//= require tabs

タグが参照しているファイルは「epiceditor.js.erb」であることに注意してください。必要な Rails コードが埋め込まれているからです。

ご協力いただきありがとうございます

編集:

これは Sprockets のバグだと思います。Rails を 3.2.9rc2 に更新すると、エラーは次のようになります: ActionView::Template::Error (Asset logical path has no extension: epiceditor/.js

しかし、もちろん、epiceditor の拡張子は epiceditor.js.erb であり、javascript_include_tag でもそれについて明示しようとしました。

4

1 に答える 1

3

バグを見つけました。私が呼び出している .js.erb ファイル内で

<% asset_path 'epiceditor/' %>

これは、すべての epiceditor ファイルが配置されているパスに展開する必要がありますが、実際にはファイル自体を再帰的にロードしています。これは、開発環境では適切に拡張されていますが、運用環境では拡張されていません。おかしいでしょ?その理由は、ダイジェストを追加しているためです。だから私はこれで問題全体を修正しました:

<%= asset_path 'epiceditor/', :digest => false %>

そして今、それはディレクトリに展開され、再帰の罠にはまりません。

これが誰かの時間を節約できることを願っています!

于 2012-12-03T20:45:22.533 に答える