无法正确编译和部署 Rails 资产

Posted

技术标签:

【中文标题】无法正确编译和部署 Rails 资产【英文标题】:Cannot get rails assets to compile and deploy correctly 【发布时间】:2014-06-14 20:55:04 【问题描述】:

我不确定我做错了什么......

这是在暂存环境中。我在 app/assets/stylesheets/styles.css.scss 里面说:

.logo-div 

background-image:image-url("logo_white.png");


我也有 app/assets/images/logo_white.png。

当我运行 bundle exec rake assets:precompile 时,我确实在我的 public/assets 文件夹中获得了一个已编译的 application.css 文件以及 logo_white.png (logo_white-204b61bda69f4aae0c9bb35ca909cdc2.png) 文件的指纹版本,但图像- url 没有正确转换,而是显示为:

background-image:url(/images/logo_white.png)

我本来希望它看起来像这样:

background-image:url(/assets/logo_white-204b61bda69f4aae0c9bb35ca909cdc2.png)

有人知道为什么这不起作用吗?

【问题讨论】:

如果您使用默认设置,您应该运行RAILS_ENV=production bundle exec rake ... 以确保您使用正确的环境设置。 RAILS_ENV 是环境变量 rails 将用于检查它应该运行的环境。它将默认为“开发”。 【参考方案1】:

当 Rails 找不到指定的文件时,您将获得对 /images/(而不是 /assets/)中文件的引用。

我会仔细检查这个logo_white.png 的拼写和文件位置 - 确保它在/app/assets/images 中并且拼写没有不同(例如logo-white.pnglogo__white.pnglogo_white.jpg

【讨论】:

【参考方案2】:

如果文件 logo_white.png 位于 images/ 以外的其他目录,则需要添加到 application.rb:

config.assets.paths << "#Rails.root/app/assets/gallery"

【讨论】:

以上是关于无法正确编译和部署 Rails 资产的主要内容,如果未能解决你的问题,请参考以下文章

加速资产:使用 Rails 3.1/3.2 Capistrano 部署预编译

Rails 3 自动资产部署到 Amazon CloudFront?

Rails 4 - 在生产服务器上预编译资产后没有 manifest.json

使用 webpack 部署到 Heroku 时预编译资产时出错

导致资产预编译在heroku部署上失败的代码片段

预编译资产失败的 Rails