我看了很多关于这个话题的帖子,但似乎找不到解决我问题的组合。如果是重复,很抱歉。
问题是我不确定我走到这一步的顺序。
我在Heroku上开发和生产了一个功能完美的Rails应用程序。然而,在Heroku部署中,我在资产预编译期间得到了一个错误。所以,我改变了设置,所以Heroku会假设"rake asset:precompile"在部署之前已经在本地运行。消除了部署错误,没有问题。有些恼人的是,我现在必须在本地预编译并将文件包含在我的Git存储库中,但我喜欢无错误部署。
无论如何,现在在开发中,CSS的变化并没有即时反映出来。我必须运行"rake assets: precompile"。这可不好。找到一个帖子,删除公共/资产可以解决这个问题,它做到了。
现在Javascript/Coffeescript的更改不会即时反映。
抱歉,描述太啰嗦了。
理想情况下,我会得到一个变化反映在开发中的世界,我不需要在Heroku部署之前运行'rake assets: precompile ',我不会在Heroku预编译期间得到错误。
不太理想的情况是,我只是回到我最初的行为(Heroku在部署时抱怨,但一切都很好)。
如果您想在运行中预编译资产(例如config/production.erb
)
config.assets.compile = true
config.assets.precompile << '*.js'
然后查看config/application.rb
,您可以选择是否要在部署到生产环境之前预编译
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end