am-rails
am-rails

Reputation: 1473

How to precompile assets and avoid "Error: file isn't precompiled" on specific pages?

When I push my code to Heroku I get the following message:

Precompiling assets failed, enabling runtime asset compilation

Runtime compilation can cause issues, so I added the following line to config/application.rb:

config.assets.initialize_on_precompile = false

(As suggested at Error pushing to heroku - aborting my rake assets:precompile and on Heroku Help )

This allows the precompilation to work. However, some of my pages include other javascript files. For example, I include a file from 'vendor/javascripts' within certain pages by putting a tag on the specific page:

<%= javascript_include_tag "src/ace.js" %>

When I visit such a page, it causes the following error (when precompiling works):

ActionView::Template::Error: src/ace.js isn't precompiled

How can I fix it so such pages do not throw errors?

Upvotes: 0

Views: 218

Answers (2)

Jonathan Bender
Jonathan Bender

Reputation: 1909

You'll need to add the file to the assets.precompile.

Add the following to your config/environments/production.rb to compile all your css/js files:

config.assets.precompile = ['*.js', '*.css']

Upvotes: 1

shivashankar
shivashankar

Reputation: 1177

You can add your ace.js and other required files in a javascript file for instance "custom.js" Then you can use your regular code to include the file

Add the following in custom.js. ( Assumed ace.js resides in vendor/javascripts)

//= require ace

Add the file to compilation list by adding following in application.rb

config.assets.precompile += %w( custom.js )

You can now use your javascript_tag to include the source

<%= javascript_include_tag "custom" %>

Upvotes: 0

Related Questions