我遇到Heroku的问题显示我的'places.js'没有预编译,即使我在雪松堆栈上运行,并且在slug编译期间它正在运行rake预编译任务。所以我尝试使用rake assets:precompile RAILS_ENV=production
在本地运行它,确实rails并没有预编译我的/app/assets/javascripts/places.js.coffee.erb
资产。
我的production.rb
正在使用默认的rails 3.1配置,我甚至尝试从资产中删除.erb,但无济于事。
我还想过,因为我的places.js.coffee.erb资产没有包含在链接清单中(我手动将它包含在我的应用程序中),也许它只预编译清单中的资产。在清单中要求它也不起作用。
只有我的application.js.coffee
和`application.css正在预编译(有和没有摘要)。
我发现的唯一问题可能是用于匹配资产的正则表达式较差,但默认值(?:\/|\\|\A)application\.(css|js)$
与我的资产不匹配,因此应将其包括在内。
我不确定如何从这里排除故障。一切都是默认的。关于这里可能发生什么的任何想法?
答案 0 :(得分:10)
首先,如果您希望文件在不在清单中时进行编译,则需要将其添加到预编译配置选项中:
config.assets.precompile += ['places.js']
其次,您可以编辑您的问题以包含您的清单 - 这可能是语法问题。如果我能看到问题所在,我会编辑这个答案。
答案 1 :(得分:4)
我有同样的问题,并解决了这个问题:
# add new file /app/assets/javascripts/places_manifest.js
//= require places
# add a line to config/application.rb
config.assets.precompile += ['places_manifest.js']
# in your views include places_manifest, not places
javascript_include_tag 'places_manifest'
答案 2 :(得分:1)
虽然上述解决方案似乎很好,但我想知道为什么要这样做?
和其他人一样,我在生产中遇到错误,说明我新添加的javascript文件没有预编译。但是,我发现它是在我的生产服务器上生成的缩小的application.css文件中的代码。
问题在于,在开发时,我认为我需要添加javascript_include_tag
帮助程序来加载我的新javascript文件。添加该帮助器是我特定错误的根源。我刚删除它,在开发和生产环境中一切正常。
所以我的建议是在你的缩小的application.js中查找你的新.js文件的迹象,并且不要修改上述解决方案建议的任何其他文件。如有必要,请以我的方式指出错误;)