【发布时间】:2011-11-17 13:30:46
【问题描述】:
为了将控制器特定的 JavaScript 逻辑排除在标准 application.js 之外并且只包含在相关控制器中,我将它放在自己的 .js 文件中,并根据布局中的控制器名称包含它像这样:
<%= javascript_include_tag "application", params[:controller] %>
这很好用,但是当我将应用程序部署到生产环境时(我使用 Capistrano 并设置了预编译任务),资产管道不会预编译任何控制器特定的 JS 文件。我认为这是因为 application.js 中的 require 指令没有引用我的实际 JavaScript 文件。
如何在不将控制器特定的 JS 移回 application.js 或从 application.js 显式引用它的情况下处理此问题?
有没有办法告诉资产管道预编译额外的列表文件?如何在生产环境中手动预编译特定文件?
更新
因为它是turns out,您可以在config/environments/production.rb 中指定单个文件:
config.assets.precompile += %w( achievements.js )
...或者我只是任性地为每个 JavaScript 文件添加它:
config.assets.precompile += %w( *.js )
【问题讨论】:
-
这真的应该是自动的!
-
这里值得注意的是,将 scss/coffee 文件添加到预编译列表将不起作用! (也不会抛出任何错误!)。您必须仅以 .js/css 扩展名命名。
标签: ruby-on-rails ruby-on-rails-3 asset-pipeline