ruby-on-rails - 没有路由匹配 [GET]/assets

标签 ruby-on-rails ruby-on-rails-3 asset-pipeline

我有一个 Rails 应用程序,正在尝试在生产环境中进行测试。我运行了 RAILS_ENV=生产 rake asset:precompile ,它在/public/assets 中生成了我的所有 Assets 。问题是,当我启动我的应用程序时,我得到:

ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):

此文件确实存在于 /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css 中。

对于为什么我收到此 RoutingError 有什么想法吗?

最佳答案

在生产模式下,Rails 将不负责提供静态资源。因此,您会收到此错误。 Thin 也不会这样做,因为它只是 Rails 的包装。

这由应用程序中 config/environments/Production.rb 中的此设置控制:

config.serve_static_files = false

或者在 Rails 5 中:

# config/environments/production.rb
config.public_file_server.enabled = true

或将 ENV['RAILS_SERVE_STATIC_FILES'] 设置为 true。

您可以设置为 true 或使用真正的服务器(例如 Apache 或 Nginx)来提供静态 Assets 。我怀疑 Pow 也可能这么做。

<小时/>

如果您使用 Heroku,他们建议使用 rails_12factor gem,它默认启用此设置。将 gem 放入 Gemfile 中的 product 组中,如下所示:

group :production do
  gem 'rails_12factor'
end

关于ruby-on-rails - 没有路由匹配 [GET]/assets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829480/

相关文章:

ruby-on-rails - 在 rails 中未检测到 lib 文件夹下的类

ruby-on-rails - -> 在 Ruby 中是什么意思

jquery - Grails 4:Grails Spring Websocket 2.5.0.M1升级破坏了Websockets

javascript - 生产中的 Rails JavaScript 错误 : 'Invalid left-hand side in assignment'

javascript - Rails 递归地包含 javascripts Assets 文件夹

ruby-on-rails - Rails 使用地理编码位置确定 elasticsearch 范围

ruby-on-rails - Active Record - 查找和更新(仅当对象存在时)

ruby-on-rails-3 - “捆绑安装”正在创建 ./rails 文件夹

ruby-on-rails-3 - Ruby on Rails with Sorcery 重置密码电子邮件出现未定义方法错误

ruby - rails 3 : Do i need to give return true in a before_save callback for an object. 保存工作?