如何构建任务’资产:预编译’

我在生产服务器上遇到了这个错误,无法找出原因。 它在运行此命令时发生:

bundle exec rake assets:precompile RAILS_ENV=production 

我正在使用Rails 3.1.0.rc6

这很可能是因为你的config/application.rb不需要rails/all (默认值),但有些自定义要求。

要解决此问题,请将以下内容添加到config/application.rb

 require 'sprockets/railtie' 

我知道这是一个老post,但我认为如果我把这个添加到答案中,它可能会帮助某人(可能是我未来的自己)。

添加到Capfile(或deploy.rb)

 load 'deploy/assets' 

将其添加到application.rb

 require 'sprockets/railtie' 

我认为这可能是因为你不需要生产中的资产gem。 默认情况下,rails期望您在生产中预编译资产。 在config / application.rb中更改此设置:

注释掉这一行:

Bundler.require * Rails.groups(:assets =>%w(开发测试))

并取消注释这一行:

Bundler.require(:default,:assets,Rails.env)

真奇怪。 你可以随时尝试添加

 load "sprockets/assets.rake" 

你的Rakefile。 它应该包含在actionpack railtie中。

我的Rakefile包含:

 require File.expand_path('../config/application', __FILE__) Qnm::Application.load_tasks 

我正在运行这个命令 – 出于纯粹的习惯 – 在一个只有API的应用程序的根目录中,当然,它没有任何资产。