我有一个Rails应用程序,我正在尝试在生产环境中进行测试。我运行了RAILS_ENV=production rake assets:precompile
,它在/public/assets中生成了我的所有资产。问题是,当我使用RAILS_ENV=production rails s thin
启动我的应用程序时,我得到:
ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):
这个文件在/public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css
上确实存在。
有没有想过为什么我要买这个RoutingError
发布于 2011-10-25 00:22:18
除了Ryan上面所说的,Rails资产管道指南还描述了如何设置Apache或nginx来为您提供静态资产。
http://guides.rubyonrails.org/asset_pipeline.html
你真的应该设置nginx或Apache来服务静态资源,因为它们比mongrel/thin/unicorn更适合这个任务。
发布于 2016-12-27 06:50:14
在Rails5中,config.serve_static_files
选项已经更改,所以现在需要
config.public_file_server.enabled = true
为本地资产提供服务。
发布于 2016-01-26 02:52:07
Rails4.2在您的配置/环境/ staging.rb和production.rb文件中添加/更改了这一行:
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
如果没有设置RAILS_SERVE_STATIC_FILES,并且您是来自Rails服务器的服务资产(就像使用Unicorn一样),那么它将缺省为"false",并且将发生RoutingError。
这是一个简单的修复方法:
config.serve_static_files = true
https://stackoverflow.com/questions/7829480
复制相似问题