2013-02-16 4 views
0

J'essaie de mettre à niveau une application déjà déployée sur Heroku pour utiliser le pipeline d'actifs dans Rails 3.1. J'ai suivi toutes les étapes nécessaires dans RailsCasts #282 et mon application fonctionne bien localement. Cependant, quand je pousse à Heroku et essaye d'accéder au chemin racine, j'obtiens des erreurs du genre "foobarbaz.png" is not precompiled. Si je supprime la première image de la page, j'obtiens la même erreur pour la suivante, et ainsi de suite. Toutes les images ont été poussées à Heroku, donc il n'y a aucun cas d'essayer de référencer des images qui ne sont pas là.Mise à niveau vers Rails 3.1 Dépannage du pipeline d'actifs problématique

J'ai remarqué que quand je poussais l'application à Heroku, je l'ai fait/ne pas voir la sortie suivante:

-----> Preparing Rails asset pipeline 
     Running: rake assets:precompile 

J'ai essayé de courir rake assets:precompile localement et continuer à obtenir l'erreur suivante:

rake aborted! 
production database is not configured 

Il n'y a aucune configuration de production dans mon fichier database.yml en raison de l'utilisation de Heroku. Lorsque je tente de lancer heroku run rake assets:precompile, je reçois l'erreur suivante:

rake aborted! 
Application has been already initialized. 

J'ai ajouté les lignes nécessaires pour application.rb et mes fichiers d'environnement, et je ne arrive pas à le faire fonctionner!

+0

avez-vous '' 'require « rails/all'''' '' 'Bundler.require (* Rails.groups (: actifs))? si elle est définie (Bundler) '' 'dans votre application.rb? – phoet

+0

Oui, j'ai essayé de remplacer ce que j'avais (le code donné dans le RailsCast) avec cette ligne et j'ai toujours les mêmes erreurs. –

Répondre

1

Heroku suppose que vous faites votre propre précompilation (avec laquelle vous rencontrez un problème) si le fichier manifest.yml est présent.

SUPPRIMER manifest.yml de votre dossier public/public/assets.

Poussez les modifications à heroku. Exemple ci-dessous

$ git rm public/assets/manifest.yml 
$ git commit -m "remove precompile manifest" 
$ git push -f heroku master 

Exécuter les actifs: précompiler sur le serveur heroku. Entrez:

$ heroku run rake assets:precompile 
+0

Il n'y a aucun fichier manifest.yml dans mon projet. –

+0

ce qui est dans votre fichier database.yml? –

+0

Options de configuration pour une base de données de développement et de test. Je n'ai pas de configuration de production parce que j'utilise Heroku. –

2

Ce problème est arrivé à moi aussi, et dans mon cas, il était parce que j'avais la ligne suivante sur ma config/application.rb

config.assets.initialize_on_precompile = false

il semble nécessaire dans certaines versions de Rails selon Heroku (https://devcenter.heroku.com/articles/rails-asset-pipeline),

While precompiling assets, in Rails 3.x, you can prevent initializing your application and connecting to the database by ensuring that the following line is in your config/application.rb:

config.assets.initialize_on_precompile = false

mais dans mon cas, il a été jeté la « demande déjà Comme les journaux Heroku n'étaient pas vraiment utiles lors du déploiement, la façon dont je l'ai testé consistait à exécuter la tâche de précompilation des ressources sur mon instance heroku:

actifs râteau run Heroku: precompile

Questions connexes