【问题标题】:loading images from /images not working in production | Ruby on Rails从 /images 加载图像在生产中不起作用 | Ruby on Rails
【发布时间】:2018-08-09 12:32:16
【问题描述】:

我的 rails 应用正在加载我之前添加的图像。旧的都是从 /assets 加载(实际上是加载)我添加的新图像试图从 /images 而不是 /assets 加载(并且不起作用)

我的 rails 应用程序在带有 Nginx 和乘客的 Ubuntu 16 上运行。

我获取它们的方法是将文件名以 .png 结尾(例如:picture.png)输入到 simple_form 字符串输入中。

它是从这个渲染的:<%= image_tag("#{post.thumbnail_link}", :alt => "#{post.title}", :width => 320, :height => 180, class: "news-object") %>

并通过这个帖子显示:<%= image_tag("#{@post.thumbnail_link}", :alt => "#{@post.title}", class: "inpost-thumb") %>

之前添加的也加载了一长串看似随机的数字/字母。 - 新的没有。

我认为唯一不同的是,新图像最近已推送到服务器,而当我将 rails 应用程序放到生产服务器上时,旧图像可能已经存在。

我尝试在config/initializers/assets 中执行Rails.application.config.assets.precompile += ["*.png"],但这不起作用。

图像在本地主机上的开发中加载良好。

我希望像旧的那样从/assets 加载图像。 新旧都在/assets/images

【问题讨论】:

  • 碰巧你在 Heroku 上吗?
  • @NMPennypacker 不,我使用的是 Digital Ocean Ubuntu 16 droplet。
  • 在你的机器上试试这个:运行RAILS_ENV=production bundle exec rake assets:clobber然后RAILS_ENV=production bundle exec rake assets:precompile。添加并提交更改并运行部署
  • @NMPennypacker 谢谢!实际上,我只是直接通过我的 ubuntu 服务器运行它。我猜它只是破坏了它,直到它起作用,哈哈。请回答这个问题,以便我奖励您的帮助。
  • 酷。我添加了一个答案。如果你在你的机器上这样做,你可能不必设置RAILS_ENV。如果它在生产中工作,您仍然应该在本地预编译并将更改提交到版本控制

标签: ruby-on-rails ruby


【解决方案1】:

您可以尝试运行:

RAILS_ENV=production bundle exec rake assets:clobber

RAILS_ENV=production bundle exec rake assets:precompile

添加并提交更改并运行部署。看起来您的新资产还没有被编译。

有关 Rails 资产管道的更多信息可以在这里找到:https://edgeguides.rubyonrails.org/asset_pipeline.html

快速阅读那里可能会为您节省不少时间。

【讨论】:

  • 谢谢,每次向我的 Rails 应用程序添加新资产时是否需要运行此程序?
  • 是的,每次您在 /assets 中添加/更改任何内容时。有些人选择在构建过程中自动化它。
猜你喜欢
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
相关资源
最近更新 更多