Rails pipeline not working in production environment?

I recently updated the application from Rails 3.0 to 3.1. I followed all the instructions that I could find to enable the resource pipeline, but it always fails when in the production environment:

<%= javascript_include_tag "application" %> 

gives me

 <script src="/javascripts/application.js" type="text/javascript"></script> 

in which there is no digest, and I get the following error:

 cache: [GET /javascripts/application.js] miss Started GET "/javascripts/application.js" for 127.0.0.1 at 2011-10-03 23:31:36 +0100 ActionController::RoutingError (No route matches [GET] "/javascripts/application.js"): 

I tried variations of these settings in application.rb:

 require File.expand_path('../boot', __FILE__) #require 'rails/all' require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "rails/test_unit/railtie" if defined?(Bundler) # If you precompile assets before deploying to production, use this line Bundler.require *Rails.groups(:assets => %w(development test)) # If you want your assets lazily compiled in production, use this line # Bundler.require(:default, :assets, Rails.env) end module Blog class Application < Rails::Application config.autoload_paths += %W(#{config.root}/lib) config.encoding = "utf-8" config.filter_parameters += [:password] config.assets.enabled = true config.assets.version = '1.0' end end 

and full production.rb (minus some comments)

 Blog::Application.configure do config.cache_classes = true config.consider_all_requests_local = false config.action_controller.perform_caching = true config.serve_static_assets = false config.assets.compress = true config.assets.compile = false config.assets.digest = true config.i18n.fallbacks = true config.active_support.deprecation = :notify end 

I completed the rake assets:precompile .

I do not see any obvious steps?

Edit: Additional Information:

My assets are in the app/assets folder. app/assets/images , app/assets/javascripts , app/assets/stylesheets , etc.

I see my files generated in my public/assets directory with names and digests.

app/assets/javascripts/application.js really compiles with something like public/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js . They end in the public directory.

+7
source share
2 answers

Stars do not load.

To remove the active entry in the previous version of the rails (a la this question Delete ActiveRecord in Rails 3 (beta) ), require 'rails/all' was replaced with

 require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "rails/test_unit/railtie" 

There were no sprockets/railtie

+12
source

See Upgrading to Rails 3.1 Railscast

Make sure your assets are in the app/assets folder. app/assets/images , app/assets/javascripts , app/assets/stylesheets , etc.

Run rake assets:precompile

You should see the files generated in the app/public/assets directory with names and digests, if included.

app/assets/javascripts/application.js will compile in /assets/application-6ec417a53cb2bdb949966a153a61e7b1.js

If the resource is named similar above with the digest, Production.rb should have the following configuration:

 # Generate digests for assets URLs config.assets.digest = true 

If you look at the source of the web page, you will see something similar to the following:

 <script src="/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js" type="text/javascript"></script> 

Try manually downloading the file by going to http://example.com//assets/application-6ec417a53cb2bdb949966a153a61e7b1.js

The file should be loaded if you do not check permissions and further logs.

+3
source

All Articles