Ruby on Rails assets not being precompiled on Heroku

吃可爱长大的小学妹 提交于 2019-12-11 11:21:32

问题


I have a project that works in the local development environment but breaks when it is uploaded to Heroku. When visiting my project on Heroku, I notice that I get 404 responses from the server saying that it could not find my css and js files. I have done some searching and found out that Heroku is not precompiling my assets. The project will work fine until Heroku puts my project to sleep. Upon waking the project in Heroku, the css and js are broken.

The project is using Rails 4.2.4, I have made sure to to include config.serve_static_assets = true in my config/application.rb and gem 'rails_12factor', group: :production in my Gemfile.

The css and js only breaks when Heroku puts the project to sleep due to inactivity. Does anyone know how to have Heroku automatically precompile assets when it is awaken from sleep?


回答1:


I had similar issues before, my best bet was to precompile in local and then push to heroku. Configure your production.rb as follows:

config.serve_static_files = false
config.assets.compile = false

then in your console precompile as follows:

rake assets:precompile RAILS_ENV=production

This will precompile everything in public/assets commit your changes and push to heroku.

Also reset your assets cache for avoid any inconsistence:

rake assets:precompile RAILS_ENV=production

The above will force all your public/assets directory to rebuild when you run precompile command.

If your issue is with assets recompilation my answer should solve it, if you still have issues then you are doing something wrong or the issue does not have anything to do with assets precompilation.

We set the configuration values of above to false because now you are sending the precompiled files to the repo, so we do not serve static files nor fallback assets pipeline if something is missing, we are going everything in local.




回答2:


Gemfile

gem 'rails_12factor', group: :production 

application.rb

By default Rails 4 will not serve your assets. To enable this functionality you need to go into config/application.rb and add this line:

config.serve_static_assets = true

production.rb

config.serve_static_files = true
config.assets.compile = true

Command Line

bundle install
bundle exec rake assets:precompile RAILS_ENV=production

Make sure the images are in the /public folder.

Reference here



来源:https://stackoverflow.com/questions/35470492/ruby-on-rails-assets-not-being-precompiled-on-heroku

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!