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

时间:2011-08-26 14:12:28

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 production asset-pipeline

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

bundle exec rake assets:precompile RAILS_ENV=production

我正在使用Rails 3.1.0.rc6

5 个答案:

答案 0 :(得分:76)

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

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

require 'sprockets/railtie'

答案 1 :(得分:4)

我知道这是一篇很老的帖子,但我认为如果我把它添加到答案中,它可能对某人(可能是我未来的自己)有所帮助。

添加到Capfile(或deploy.rb)

load 'deploy/assets'

将此添加到application.rb

require 'sprockets/railtie'

答案 2 :(得分:3)

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

注释掉这一行:

  

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

取消注释这一行:

  

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

答案 3 :(得分:1)

这很奇怪。您可以随时尝试添加

load "sprockets/assets.rake"

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

我的Rakefile包含:

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

答案 4 :(得分:0)

出于纯粹的习惯,我正在仅API应用程序的根目录中运行此命令,该应用程序当然没有资产。