Search code examples
ruby-on-railsrubyherokuassetspipeline

Rails on Heroku - Site does not load - ActionView::Template::Error (The asset "image.jpg" is not present in the asset pipeline.)


I've build a simple website, using Rails so I can deploy it to Heroku. It runs perfectly locally, everything works fine. It deploys fine to Heroku but when opening the webpage (http://a-clean.herokuapp.com/) I get the following error displayed:

We're sorry, but something went wrong.

If you are the application owner check the logs for more information.

When I check the logs (running heroku logs in terminal) it shows the error:

ActionView::Template::Error (The asset "a_clean_sample_1.jpg" is not present in the asset pipeline.)

So far this is just a one-page website with a couple of partials. Here is the github repository: https://github.com/webbc99/a-clean

The image it's failing on is loaded in app/views/welcome/home.html.erb line 57.

Rails version 5.1.6, Ruby version 2.5.0

I've double checked that the images are in fact in the app/assets/images folder, and the image_tags are using the file extensions.

I've tried running heroku run rake assets:precompile, and I've tried using the rails12factor gem and also without it. I have tried changing config.assets.compile = false to true in the config/environments/production.rb which did get the page to load but all of the images were ignoring styling and were huge.

What is really confusing me is that I have deployed several other rails apps, same rails version, same ruby version, and none of these have had this issue before.

Here is a working app: https://github.com/webbc99/presumptuous https://presumptuous.herokuapp.com/

Any help would be greatly appreciated, been googling this for hours with no luck.


Solution

  • It's the simplest way to fix this problem is; You need to run as follows;

    1. rails assets:precompile RAILS_ENV=production
    2. git add .
    3. git commit -m {message}
    4. git push heroku master (push the code to the heroku again)

    I tried to do it from your code and work fine.