当我在生产模式下启动rails时,它会预编译所有资产,但无法提供application.css资产。我查看public/assets
并且预编译的application.css存在。
但是,每当我尝试从页面访问它时,我都会得到404.
这些是我用来启动服务器的说明,如果这可能有用的话。
RAILS_ENV=production bundle exec rake assets:clean
RAILS_ENV=production bundle exec rake assets:precompile
rails -e production
答案 0 :(得分:34)
如果您希望Rails为静态资产提供服务,请将以下行添加到production.rb中:
config.serve_static_assets = true
我知道最好允许apache或nginx为它们提供服务,但如果您使用的是rails独立服务器(或者至少它可以使用瘦服务器),这种方法很有效。
答案 1 :(得分:3)
事实证明,rails不负责提供它预编译的静态资产。您必须配置您使用的Web服务器(即nginx)为您而不是rails提供这些静态资产。我希望这些文档更加清晰。
答案 2 :(得分:0)
请你确认你有
<%= stylesheet_link_tag "application" %>
在应用程序布局的头部分段中,而不是像:
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
这样可以确保包含预编译的application-xxx.css。