32

我在生产服务器上遇到了这个错误,但不知道为什么。运行此命令时会发生这种情况:

bundle exec rake assets:precompile RAILS_ENV=production

我正在使用 Rails 3.1.0.rc6

4

5 回答 5

81

这很可能是由于您config/application.rb不需要rails/all(默认),但有些自定义需要。

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

require 'sprockets/railtie'
于 2011-08-31T19:11:47.097 回答
4

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

添加到 Capfile(或 deploy.rb)

load 'deploy/assets'

将此添加到 application.rb

require 'sprockets/railtie'
于 2012-08-07T14:52:30.637 回答
4

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

于 2018-07-24T13:39:12.527 回答
3

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

注释掉这一行:

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

并取消注释这一行:

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

于 2011-09-02T08:25:39.753 回答
1

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

load "sprockets/assets.rake"

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

我的 Rakefile 包含:

require File.expand_path('../config/application', __FILE__)
Qnm::Application.load_tasks
于 2011-08-30T01:34:24.987 回答