Rails不在生产或登台环境中提供资产

rai*_*400 4 ruby-on-rails-3 asset-pipeline

在调试此问题的过程中,我尝试在本地生产模式下运行我的应用程序,它不提供任何资产.另外,我在Heroku应用程序中有一个临时环境(与我的生产Heroku应用程序分开),它现在也显示没有任何资产的HTML.

为了调试,我:

  1. 杀死服务器
  2. 清除tmp/cache/assets
  3. 删除公共/资产
  4. rake assets:precompile
  5. 启动服务器 rails s -e production
  6. 访问该页面并打开Web检查器,然后单击application.css链接的展开箭头 Reload the page to get source for: http://localhost:3000/assets/application-e1f3e0c864a153c7iu66f8772a886376.css
  7. 重新加载页面什么都不做.

Production.rb:

config.cache_classes = true
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600"
config.assets.compress = false
config.assets.compile = false
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

Staging.rb:

config.cache_classes = true
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600"
config.assets.compress = false
config.assets.compile = false
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)

Application.rb:

config.assets.enabled = true
config.assets.version = '1.0'
config.assets.initialize_on_precompile = false
Run Code Online (Sandbox Code Playgroud)

以下是我在layout/application.html.erb中链接样式表和javascript的方法:

<%= stylesheet_link_tag "application", :media => "screen, handheld" %>
<%= javascript_include_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

Cat*_*ish 7

这是一种猜测,但不编译资产需要设置为true?

config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)

我认为你需要像这样编译资产:

rake assets:precompile RAILS_ENV='production'
Run Code Online (Sandbox Code Playgroud)

  • 不正确,使用`config.assets.compile = true`,管道中资产的所有请求都由Sprockets直接处理.此外,指定环境并没有什么区别. (3认同)
  • 除非你有一个服务于这些资产的独立服务器,否则应该有`config.serve_static_assets = true`. (2认同)

rai*_*400 7

所以问题是内存存储设置为config.cache_store = :dalli_store导致错误并将其设置为config.cache_store = :memory_store解决它.

  • 由于某些原因,它似乎根本不相关.怎么可能? (3认同)