【问题标题】:Clean and precompile rails assets manually on heroku在heroku上手动清理和预编译rails资产
【发布时间】:2016-04-15 15:28:33
【问题描述】:

我的问题是我在 app/assets 文件夹中做了很多更改,所以在我的开发环境中,我很容易使用这个命令撤消旧的。

rake assets:clobber

然后用这个重新编译。

rake assets:precompile --trace

这一切都在我的本地运行良好。现在的问题是heroku 上几乎没有什么变化。虽然 heroku 在推送代码时预编译资产,但我想手动预编译资产。通过生成的 application.css 时,它指定了四次而不是一次。第一次和第三次值是正确的,但第二次和第四次是错误的,所以我猜它会选择错误的值。所以我想通过清理资产并重新预编译来修复它。感谢您的帮助。

【问题讨论】:

  • heroku run bundle exec rake assets:clobberheroku run bundle exec rake assets:precompile?
  • 无变化。 Clobber 显示已删除 已删除 /app/public/assets 但预编译执行 nth。当我们在任何地方进行开发或生产预编译时,运行命令显示和 nth 似乎可以编译。

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


【解决方案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,则不需要更多。

当然,如果您希望使用变量或 mixin(我们强烈推荐 bourbon),您可以随意使用它们。如果您使用 gem,则不需要将 font-awesome 文件添加到您的管道中。

【讨论】:

  • 基本上在scss文件中定义和使用的变量很少。他们在heroku上重复了四次。它会像这样选择空的:fa-play-circle-o:before{content:""}}。内容为零。它应该拾取变量。本地运行良好,而 heroku 有问题。
  • 所以font-awesome有问题?
  • 是的!你又一次抓住了我@Rich
  • 我们在 Heroku 上成功使用了 font-awesome - 您使用的是哪个版本的 gem?
  • gem 'font-awesome-rails', '~> 4.5.0'
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 2015-11-05
  • 2012-06-26
  • 2015-08-28
  • 2013-03-26
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多