0

在我app/assets/javascripts/specific.js

//= require_tree ./specific

app/assets/javascripts/specific/chat我有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:precompile并查看public/assets文件夹时,我看到它们都是预编译的(例如specific-bfgbfbf4534535.js

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

在我看来:

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

4

2 回答 2

2

您不包含特定文件,而是包含整个清单,这就是清单的全部意义。

这是行不通的:

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

相反,您需要一个顶级清单的包含:

<%= javascript_include_tag 'specifics' %>

从您的问题下方的评论中:

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

这不是预编译资产的工作方式。您需要包含specifics.js或构建另一个(更细粒度的)清单。清单的重点是它们会生成要包含的单个缩小的代码块。您特别说您specific-bfgbfbf4534535.js在编译的资产文件夹中看到了一个;就是将被包含的文件,它包含pusher.js.

于 2013-06-12T02:29:20.540 回答
0

尝试预编译所有资产:

config.assets.precompile += %w( *.css *.js )
于 2013-06-11T23:15:22.223 回答