我正在尝试在亚马逊的EC2服务器上部署Web应用程序,我在服务器上安装了代码。一切看起来都有效,但当我转到主页时,我收到500错误消息,production.log
文件给出了以下错误:
ActionView::Template::Error (image.png isn't precompiled)
我尝试过rake assets:precompile
,
我已将config/environments/production.rb
中的行更改为config.assets.compile = true
image.png
是否在public/assets/manifest.yml
但我仍然得到同样的错误。
我正在运行Rails 3.2.6和Ruby 1.8.7。
感谢您的帮助!
答案 0 :(得分:7)
运行rake assets:precompile RAILS_ENV=production
应该修复它。
如果您未提供任何RAILS_ENV
,则Rails会认为它是development
我相信这是因为资产管道中的每个环境行为都不同。因此,作为一般规则,在生产中,始终使用RAILS_ENV ='production'运行rake任务,你应该保持安全:)
很高兴我能帮忙
答案 1 :(得分:2)
我正在使用Redhat的Openshift,当部署在服务器上时,它会自动转到生产环境。我也有同样的问题,但只在生产服务器上。
执行更改:
config / environments / production.rb to config.assets.compile = true
做了一个享受。此文件中还有另一个参数可以更改:
config.assets.precompile + =%w [* .png * .jpeg * .jpg * .gif]
当在服务器上部署时,您可以手动执行:
rake RAILS_ENV =生产
或者如果您使用的是自动部署的Openshift服务器,则会考虑生产.rb文件中的配置。
希望这有助于其他人遇到同样的问题。
丹尼斯
答案 2 :(得分:1)
在config/application.rb
中添加如下行:
config.assets.precompile += ['image.png']
虽然,如果它在public/assets/images
你不应该。
答案 3 :(得分:0)
已解决 - 需要运行rake assets:precompile RAILS_ENV='production
而不仅仅是rake assets:precompile
...
希望这有帮助