当我将代码推送到 Heroku 时,我收到以下消息:
预编译资产失败,启用运行时资产编译
运行时编译可能会导致问题,因此我在 config/application.rb 中添加了以下行:
config.assets.initialize_on_precompile = false
(正如推送到 heroku 时出错 - 中止我的 rake 资产:预编译和 Heroku 帮助中所建议的那样)
这允许预编译工作。但是,我的一些页面包含其他JavaScript文件。例如,我通过在特定页面上放置标签,在某些页面中包含来自"vendor/javascripts"的文件:
<%= javascript_include_tag "src/ace.js" %>
当我访问这样的页面时,它会导致以下错误(当预编译工作时):
ActionView::Template::Error: src/ace.js 未预编译
如何修复它,以便此类页面不会引发错误?
将文件添加到assets.precompile
中。
将以下内容添加到您的config/environments/production.rb
以编译所有 css/js 文件:
config.assets.precompile = ['*.js', '*.css']
您可以在javascript文件中添加ace.js和其他必需的文件,例如"custom.js"然后,您可以使用常规代码来包含文件
在自定义.js中添加以下内容。(假设 ace.js 驻留在供应商/JavaScript 中)
//= require ace
通过在应用程序.rb 中添加以下内容将文件添加到编译列表
config.assets.precompile += %w( custom.js )
现在,您可以使用javascript_tag包含源
<%= javascript_include_tag "custom" %>