为了将控制器特定的JavaScript逻辑从标准的application.js
中分离出来,并仅在相关控制器中包含它,我将其放入自己的.js文件中,并根据布局中的控制器名称进行包含,如下所示:
<%= javascript_include_tag "application", params[:controller] %>
那样做完全没有问题,但是当我将应用部署到生产环境时(我正在使用Capistrano,并设置了一个预编译任务),资产管道不会预编译任何控制器特定的JS文件。我猜这是因为我的实际JavaScript文件没有被application.js中的require指令引用。在不将我的控制器特定的JS文件移回application.js或显式地从application.js引用它的情况下,我该如何处理这个问题?
是否有一种方法可以告诉资产管道预编译额外的文件列表?我如何在生产环境中手动预编译特定的文件?
更新
据所述,您可以在
config/environments/production.rb
中指定单个文件:config.assets.precompile += %w( achievements.js )
...或者我就随意地为每个JavaScript文件都添加了它:
config.assets.precompile += %w( *.js )