Javascripts没有预编译?

时间:2013-06-11 22:58:45

标签: ruby-on-rails-3 asset-pipeline

app/assets/javascripts/specific.js我有

//= require_tree ./specific
app/assets/javascripts/specific/chat {p>我有pusher.js

另外,在config/environments/production我有

config.assets.precompile += %w( specific.js some_other_manifest.js )

然而,当我进入生产阶段(在heroku上)时,仍抱怨pusher.js未预编译。我在这里做错了什么?

部署应用程序时,似乎编译了javascript文件。

来自Heroku日志的

   Compiled specific/chat/pusher.js  (0ms)  (pid 1042)
   Compiled specific.js  (60ms)  (pid 1042)

但是当我去看时,

 ActionView::Template::Error (specific/chat/pusher.js isn't precompiled):
     1: <%= javascript_include_tag 'specific/chat/pusher' %>
     2: <%= javascript_include_tag params[:controller] %>
     3: 
     4: <div id="chat-header">
   app/views/messages/index.html.erb:1:in `_app_views_messages_index_html_erb___3285714722884343394_70246542189040'

我还尝试将config.assets.precompile ..选项放在config/application.rb内而不是production.rb

相关: Assets say "not precompiled" when they are precompiled

当我运行assets:precompile并查看public/assets文件夹时,我发现它们都是预编译的(例如specific-bfgbfbf4534535.js

所以资产实际上是预编译的,但是错误说它没有预编译

从我看来:

<%= javascript_include_tag 'specific/chat/pusher.js' %>

2 个答案:

答案 0 :(得分:2)

您不包含特定文件,包括整个清单,这就是清单的全部内容。

这不起作用:

<%= javascript_include_tag 'specific/chat/pusher' %>

相反,您需要为顶级清单提供一个包含:

<%= javascript_include_tag 'specifics' %>

根据您的问题下方的评论:

  

它不应该包含在application.html.erb

这不是预编译资产的工作方式。您需要包含specifics.js,或构建另一个(更精细)清单。清单的要点是它们产生了一个包含在内的单个缩小的代码块。您明确地说您在已编译的资产文件夹中看到specific-bfgbfbf4534535.js; 是要包含的文件,它包含pusher.js

答案 1 :(得分:0)

尝试预编译所有资产:

config.assets.precompile += %w( *.css *.js )