在Rails 3.1生产模式中找不到预编译的CSS

时间:2011-10-12 06:19:39

标签: ruby-on-rails ruby-on-rails-3.1 precompiled

当我在生产模式下启动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

3 个答案:

答案 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。