Rails Asset Pipeline 预编译,如何正确执行?
Posted
技术标签:
【中文标题】Rails Asset Pipeline 预编译,如何正确执行?【英文标题】:Rails Asset Pipeline precompile, how to do it the right way? 【发布时间】:2014-01-25 20:49:14 【问题描述】:我是 Rails 4.0 的新手。当我推动 heroku Cedar 堆栈时,我不了解预编译过程。我这样做:
$> rake assests:precompile
$> git add .
$> git commit -m "foobar" && git push && git push heroku
似乎一切正常,但我的图像/css 似乎没有在 heroku 应用程序上“加载”(Chrome)(但在本地完美运行):
Failed to load resource: the server responded with a status of 404 (Not Found) http://xxxapp.herokuapp.com/stylesheets/bootstrap.min.css
我尝试了一些方法,但我听说这不是好的解决方案。我已修改config/environments/production.rb
文件并更改:
config.assets.compile = false
到
config.assets.compile = true
它工作正常,我所有的图像和 css 都已加载,但我想我错过了一些东西。
还有
我试过了:
$> rm -rf public/assets
$> git add .
$> git commit -m "foooo" && git push && git push heroku
预编译过程运行良好,但之后,我的应用程序上仍然没有加载图像和 css。
通过添加编辑我的 Gemfile 后:
group :production do
gem 'rails_12factor'
end
图片加载良好,但没有 css..
【问题讨论】:
【参考方案1】:Heroku 应该默认为你编译资源。
你不需要做任何其他事情。
如果您已经编译了资产,您可能希望将它们从公共目录中删除,然后再次推送到 heroku。
【讨论】:
我尝试删除 public/assets 目录然后推送到 heroku,但我的页面缺少图像/css...不知道为什么。仍然“加载资源失败:服务器响应状态为 404(未找到)xxx.herokuapp.com/stylesheets/bootstrap.min.css” 您是否重置了以下行:config.assets.compile = false 您是否在更改 gemfile 后运行了包更新? 是的,我做到了。顺便说一句,这个问题已经“解决”了,因为我从头开始了一个新教程并且它可以工作。【参考方案2】:您应该在 heroku 上进行预编译,而不是在您的计算机上。
heroku run rake assets:precompile
我不知道,如果这是问题,我在一年前就这样做了。
【讨论】:
以上是关于Rails Asset Pipeline 预编译,如何正确执行?的主要内容,如果未能解决你的问题,请参考以下文章
即使在 config/initializers/assets.rb 中声明,Sprockets Rails Helper Asset 也未预编译
markdown Rails Asset Pipeline:`require`指令
asset_sync Gem 导致 Heroku 挂起预编译
在asset_pipeline中包含来自rails应用程序之外的资产