无法正确编译和部署 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.png
或logo__white.png
或logo_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