在rails 4生产环境中找不到404资产错误

时间:2016-04-06 03:52:17

标签: ruby-on-rails asset-pipeline ruby-on-rails-4.1

我是java环境中的新手。我对资产管道中的轨道3到4几乎没有什么困惑。

目前我在rails 4.2.5中 我在本地环境中创建了一个示例应用程序。 我从app / assets / javascripts中创建了一个新的js并从视图中引用它,一切似乎在我的本地环境中正常工作。

在此之后,我想用生产环境测试它是如何工作的。以下是我所做的步骤。

  1. RAILS_ENV =生产佣金资产:清洁资产:预编译[所有文件创建公共/资产]
  2. 在生产模式rails server -e production
  3. 中启动服务器
  4. 现在,当我浏览页面时,我收到此错误, 萤火虫"NetworkError: 404 Not Found - http://localhost:3000/assets/application-c5c431cb7c0a202f831a634922aaf1d536712002ae74334fb03ba4698b32b84c.js"
  5. 在搜索几个主题时,他们建议添加config.assets.compile = true。但我认为这不是解决方案的原因,因为它会降低应用程序的速度。

    请帮忙。

1 个答案:

答案 0 :(得分:2)

  

默认情况下,如果没有通过资产处理资产,Rails4将返回404   外部代理,如Nginx。    - https://github.com/heroku/rails_serve_static_assets

我建议您查看rails_12factor gem,其中包含rails_serve_static_assets gem,它将允许您的Rails应用提供静态资源(例如.js文件)。

编辑:

你可能不需要宝石(虽然我没试过):

  

config.serve_static_files将Rails配置为静态服务   文件。默认为true,但在生产环境中已转为   用作运行的服务器软件(例如NGINX或Apache)   应用程序应该提供静态资产。与默认值不同   设置运行时设置为true(绝对不推荐!)或   使用WEBrick在生产模式下测试您的应用程序。否则你不会   能够使用页面缓存和对经常存在的文件的请求   无论如何,在公共目录下会打你的Rails应用程序。    - http://guides.rubyonrails.org/configuring.html

在Rails 5中,此配置方法已重命名为config.public_file_server.enabled,rails_serve_static_assets gem根据版本处理正确的命名。