Ruby on rails 3.1 rails 3.1某些资产未在生产中预编译

Ruby on rails 3.1 rails 3.1某些资产未在生产中预编译,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,我遇到了Heroku的问题,显示我的“places.js”没有预编译,即使我在cedar堆栈上运行,在slug编译期间,它正在运行rake预编译任务。因此,我尝试使用rake资产:precompile RAILS_ENV=production在本地运行它,实际上RAILS并没有预编译我的/app/assets/javascripts/places.js.coffee.erb资产 我的production.rb使用默认的rails 3.1配置,我甚至尝试从资产中删除.erb,但没有效果 我还认为,

我遇到了Heroku的问题,显示我的“places.js”没有预编译,即使我在cedar堆栈上运行,在slug编译期间,它正在运行rake预编译任务。因此,我尝试使用
rake资产:precompile RAILS_ENV=production
在本地运行它,实际上RAILS并没有预编译我的
/app/assets/javascripts/places.js.coffee.erb
资产

我的
production.rb
使用默认的rails 3.1配置,我甚至尝试从资产中删除.erb,但没有效果

我还认为,由于链轮清单中不包括我的places.js.coffee.erb资产(我在我的应用程序中手动将其包括在内),可能它只预编译清单中的资产。在舱单上要求它也不起作用

只有my
application.js.coffee
和`application.css在预编译(有或没有摘要)

我发现的唯一问题可能是用于匹配资产的正则表达式很差,但是
(?:\/\\\\\\\\\\\\A)application\(css|js)$
的默认值与我的资产不匹配,因此应该将其包括在内


我不知道如何从这里排除故障。一切都是默认的。您对这里可能发生的情况有什么想法吗?

首先,如果您希望在文件不在清单中时对其进行编译,则需要将其添加到预编译配置选项中:


config.assets.precompile+=['places.js']


第二,您是否可以编辑您的问题以包括您的清单-这可能是一个语法问题。如果我能看到问题所在,我将编辑此答案。

我遇到了相同的问题,并按如下方式解决:

# 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'

虽然上述解决方案看起来不错,但我想知道为什么我必须这样做

和其他人一样,我在生产过程中遇到了一个错误,即我新添加的javascript文件没有经过预编译。然而,我在Rails在我的生产服务器上生成的minified application.css文件中找到了它的代码

问题是,在开发过程中,我想我需要添加一个
javascript\u include\u标记
helper来加载新的javascript文件。添加那个助手是我特定错误的根源。我刚刚删除了它,在开发和生产环境中一切都很好


因此,我建议您在缩小的application.js中查找新的.js文件的迹象,并且不要像上述解决方案建议的那样修改任何其他文件。如有必要,请用我的方式指出错误;)

是否可以简单地将文件添加到清单中?是的,如果您希望application.js中包含所有代码。这种情况下,您需要直接引用文件中的代码。当一个页面有很多代码而站点的其他部分不需要这些代码时,通常会执行此操作。我认为这些代码适用于您不想使用所有已编译文件的情况,例如,在您不使用application.html.erb而不调用的情况下