77 votes

Heroku NE compile PAS les fichiers sous les pipelines d'actifs dans Rails 4

Tout se passe bien en machine locale avec des actifs de pipeline dans les Rails 4 et Ruby 2.0. Mais lors du déploiement de heroku, il est démontré que:

-----> Preparing app for Rails asset pipeline
   Running: rake assets:precompile
   I, [2013-03-12T03:28:29.908234 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/rails-2ee5a98f26fbf8c6c461127da73c47eb.png
   I, [2013-03-12T03:28:29.914096 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/trash-3c3c2861eca3747315d712bcfc182902.png
   I, [2013-03-12T03:28:33.963234 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/application-bf2525bd32aa2a7068dbcfaa591b3874.js
   I, [2013-03-12T03:28:40.362850 #912]  INFO -- : Writing /tmp/build_1n6yi8lwna3sj/public/assets/application-13374a65f29a3b4cea6f8da2816ce7ff.css
   Asset precompilation completed (14.36s)

Heroku semble compiler des fichiers, mais le mettre dans /tmp sans erreurs. Mes questions sont les suivantes:

  1. Comment se fait-Heroku compiler des actifs des fichiers vers /tmp?
  2. Ma dernière solution était de courir RAILS_ENV=production bundle exec rake actifs:précompiler localement, mais cela a généré un manifeste-xxxxxx.json en public/actifs, plutôt que de manifester.yml, de sorte que heroku ne détecte pas le JSON fichier manifeste. J'ai trié par créé manuellement un yml du fichier json et heroku est devenu heureux. A heroku approche de l'été dépassés?

102voto

Joseph Jaber Points 2922

Les plugins d'actifs de Heroku ne fonctionnent plus car Rails 4 ne prend pas en charge les plugins. Vous devez utiliser les gemmes d'actif de Heroku à la place. Placez ceci dans votre Gemfile:

 group :production do
  gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
  gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
end
 

Suivez le guide de Heroku pour commencer à utiliser Rails 4.

Mise à jour (22/07/2013): Heroku fournit désormais un bijou différent pour précompiler des ressources.

 group :production do
  gem 'rails_12factor'
end
 

33voto

Israel Barba Points 255

Vous devez configurer Rails pour gérer les actifs statiques en production: config / environnements / production.rb

SampleApp :: Application.configure do
  .
  .
  .
  config.serve_static_assets = true
  .
  .
  .
fin

16voto

voss Points 141

Depuis rails 4 remplacé manifeste.yml avec manifeste-(empreintes digitales).json, vous aurez envie de permettre d'actifs statique de servir.

À partir de débuter avec Rails 4.x sur Heroku:

gem 'rails_12factor', group: :production

alors

bundle install

et, enfin,

git push heroku

Correction du problème pour moi. Espérons que cette aide!

14voto

Boti Points 1028

Je cours exactement dans le même problème.

J'ai défini config.serve_static_assets = true dans mon fichier environnements / production.rb jusqu'à ce que heroku ne prenne pas en charge le nouveau format de manifeste.

Il s’agit donc d’une solution temporelle jusqu’à l’ajout du support heroku.

13voto

PatrickEm Points 256

Après des heures de recherche sur google, dans laquelle aucun des guides sur Heroku ou les suggestions sur StackOverFlow m'a aidé, j'ai finalement couru dans ce blog, qui a offert cette idée:

heroku labs:enable user-env-compile --app=YOUR_APP

Sans cela, l'asset pipeline va toujours essayer d'initialisation de l'ensemble de l'application et se connecter à la base de données (en dépit de toutes les choses que vous avez pu lire que les rails 4 maintenant plus à le faire). Cela expose votre Heroku configuration de Rails, de sorte qu'il peut démarrer avec succès et d'exécuter des tâches rake comme des actifs:précompiler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X