2013-01-01 62 views
1

我审查关于这一主题的很多帖子,但似乎无法找到相结合,解决我的问题。对不起,如果这是重复。打破了我的资产管道

问题是我不知道的步骤顺序我带着去了这一点。

我在开发和生产在Heroku上完美运行Rails应用程序。但是,在Heroku部署中,资产预编译期间出现错误。所以,我改变了设置,Heroku会假设'rake asset:precompile'在部署之前已经在本地运行。摆脱了部署错误,没有问题。有些恼人的是,我现在不得不在本地进行预编译,并将这些文件包含在我的Git存储库中,但我喜欢无错误的部署。

无论如何,现在正在开发中,CSS的变化并没有被即时反映出来。我必须运行'rake assets:precomplile'。这不好。找到一个帖子,删除公共/资产将解决,它做了。

现在,Javascript/Coffeescript的变化并没有得到反映。

对不起,冗长的说明。

理想情况下,我会到达一个在开发过程中反映变化的世界,我不需要在Heroku部署之前运行'rake assets:precomplile',并且我不会收到错误在Heroku的预编译期间。

不太理想,我会回到我最初的行为(Heroku抱怨部署,但一切仍然正常)。

+0

你确切知道改变的设置是什么,让heroku认为'rake assets:precompile'已经在本地运行了吗?顺便说一句,你尝试在这里建议什么? https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar基本上,使用'config.initialize_on_precompile = FALSE' – pjam

+0

是。我有config.assets.initialize_on_precompile = false。 –

+0

你改变了什么设置? – pjam

回答

0

如果你想预编译的飞行使用(例如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