33

I'm getting that error on my production server, and can't figure out why. It happens when running this command:

bundle exec rake assets:precompile RAILS_ENV=production

I'm using Rails 3.1.0.rc6

Cœur
  • 37,241
  • 25
  • 195
  • 267
tybro0103
  • 48,327
  • 33
  • 144
  • 170

6 Answers6

84

This is most likely due your config/application.rb not requiring rails/all (the default), but some custom requires.

To resolve this, add the following to config/application.rb:

require 'sprockets/railtie'
Koraktor
  • 41,357
  • 10
  • 69
  • 99
8

I was running this command -- out of sheer habit -- in the root of an API-only app, which, of course, has no assets.

Niek
  • 1,464
  • 1
  • 17
  • 27
5

I know this is an old post but I thought it might help someone (probably my future self) if I added this to the answers.

add to Capfile (or deploy.rb)

load 'deploy/assets'

add this to application.rb

require 'sprockets/railtie'
engineerDave
  • 3,887
  • 26
  • 28
3

I think that it might be because you aren't requiring the asset gems in production. By default rails expects that you are pre-compiling your assets in production. Change this in config/application.rb:

Comment out this line:

Bundler.require *Rails.groups(:assets => %w(development test))

And uncomment this line:

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

  • I'm not a mongoid user like the currently accepted answer mentions in the comments. In my case I had a seperate environment just to precompile assets and the error went away once I added the new environment to the list mentioned in this answer. – ErJab Aug 08 '13 at 04:31
  • I had an extremely old app (2008), that doesn't even have sprockets, so this is the answer I needed. Cap defaults to expecting to precompile the asset pipeline, but since there is no asset pipeline it fails. – Josh from Qaribou Oct 20 '16 at 13:05
1

That's strange. You could always try adding

load "sprockets/assets.rake"

to your Rakefile. It should be included by the actionpack railtie.

My Rakefile contains:

require File.expand_path('../config/application', __FILE__)
Qnm::Application.load_tasks
qnm
  • 521
  • 3
  • 14
0

This worked for me.
Add require "sprockets/railtie" in applications.rb.
And create an empty manifest file app/assets/config/manifest.js

wandji
  • 31
  • 3