rails production'css未预编译'

sam*_*452 9 ruby-on-rails-3

我在Leopard网络服务器上使用生产的姐妹Rails 3.1应用程序完成了这个.所以我没想到会丢失部署这个应用程序.我已经让Passenger认出了应用程序,但我在apache中遇到了'[GET /] miss'错误.环顾四周我认为我可以在webrick中运行这个以查看是否可以隔离问题.

bundle exec rake assets:预编译RAILS_ENV =生产

但是当我加载localhost:3000时,我得到"blueprint/screen.css未预编译"

我开始比较姐妹应用程序之间的差异,但找不到它们.以下是他们分享的一些关键代码:

<%= stylesheet_link_tag "application" %>
  <%= javascript_include_tag "application" %> #in app/views/layouts/application.html.erb

config/environments/production.rb
config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.precompile += %w( search.js )
  config.assets.precompile += %w( blueprint/screen.css blueprint/print.css )
  config.assets.precompile += %w( *.css *.js )
Run Code Online (Sandbox Code Playgroud)

这发生在3.1.0和3.1.3中,我可以确认预编译发生在蓝图目录中.我在俯视什么?,山姆

Muh*_*lid 12

你有没有像这样分开试过?

config.assets.precompile += %w( blueprint/screen.css )
config.assets.precompile += %w( blueprint/print.css )
Run Code Online (Sandbox Code Playgroud)

然后运行:

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

这应该修复它.


小智 8

您可以在生产环境中将assets.compile设置为true,以在错过文件时回退到资产管道.

# config/environments/production.rb
# ...
# Fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)