在heroku上手动清理和预编译rails资产

时间:2016-01-11 10:45:52

标签: ruby-on-rails ruby ruby-on-rails-4 heroku asset-pipeline

我的问题是我在app / assets文件夹中做了很多更改,因此在我的开发环境中,我可以使用此命令轻松解除旧的更改。

rake assets:clobber

然后用这个重新编译。

rake assets:precompile --trace

这一切都适用于我的当地人。现在的问题是,很少有变化搞砸了heroku。虽然heroku在推送代码时预编译资产,但我想手动预编译资产。在完成生成的application.css时,它指定了四次而不是一次的值。第一次和第三次是正确的,但第二次和第四次是错误的,所以我猜错了。所以我想通过清理资产并重新预编译来修复它。 Thanx的帮助。

1 个答案:

答案 0 :(得分:1)

  

手动预编译资产

每次推送代码时都会重建Heroku的ephemeral file system。因此,理论上(Heroku通常有自己的做事方式),每次新部署都会擦除您的资产。

It's a hack,但您可以在assets:clean后面调用rake任务:

# lib/tasks/heroku_migrate.rb
Rake::Task['assets:clean'].enhance do
  Rake::Task['assets:clobber'].invoke
  ...
end

-

关于您的资产管道,如果您对样式表的编译方式遇到特殊问题,则表明您的基础代码/实现存在问题。

也许显示你遇到的问题会有什么好处?

-

当然,您可以使用模拟production环境在本地预编译:

rake assets:precompile RAILS_ENV=production

<强>更新

我们使用以下内容:

#Gemfile
gem 'font-awesome-rails', '~> 4.5' #-> Icons

#app/assets/stylesheets/application.sass
@import font-awesome

如果您使用font-awesome,则不需要更多。

当然,如果你想使用变量或mixins(我们强烈推荐bourbon),你可以随意使用它们。如果您正在使用gem,则无需将font-awesome文件添加到管道中。