【发布时间】:2013-03-04 16:57:19
【问题描述】:
在调试this problem 的过程中,我尝试在本地以生产模式运行我的应用程序,但它没有提供任何资产。此外,我在 Heroku 应用程序(独立于我的生产 Heroku 应用程序)中有一个 staging 环境,它现在也显示没有任何资产的 HTML。
为了调试,我:
- 杀死服务器
- 清除 tmp/cache/assets
- 删除公共/资产
- 运行
rake assets:precompile - 启动服务器
rails s -e production - 访问页面并打开网络检查器,当单击 application.css 链接的展开箭头时,它显示
Reload the page to get source for: http://localhost:3000/assets/application-e1f3e0c864a153c7iu66f8772a886376.css - 重新加载页面没有任何作用。
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
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
Application.rb:
config.assets.enabled = true
config.assets.version = '1.0'
config.assets.initialize_on_precompile = false
下面是我如何在 layout/application.html.erb 中链接样式表和 javascript:
<%= stylesheet_link_tag "application", :media => "screen, handheld" %>
<%= javascript_include_tag "application" %>
【问题讨论】:
-
您能展示一下您是如何访问这些资产的吗?喜欢
= stylesheet_link_tag "application", :media => "all" -
我已经更新了问题。
-
您使用的是什么 Rack 中间件?切换到瘦需要我设置
config.assets.compile = true而不是默认的false- 但如果我使用Passenger 则不需要。
标签: ruby-on-rails-3 asset-pipeline