web-dev-qa-db-fra.com

Problème de déploiement Rails 3.1 Projet à Heroku: Impossible de trouver un runtime JavaScript

J'ai du mal à déployer un Rails 3.1 projet bêta à Heroku. Le problème s'est produit à l'étape de migration de la base de données. Quand j'ai couru:

heroku rake db:migrate

J'ai reçu un message d'erreur:

[.____]> RAKE ANTORTED! 
 [.____]> Impossible de trouver un runtime JavaScript. Voir 
> Https://github.com/sststephenson/execjs [.____]> Pour une liste des actes disponibles. 
 [.____]> (voir la trace complète en exécutant la tâche avec -trace) 
 [.____]> (dans /app)[.____]

Mais je peux exécuter avec succès l'application localement, et j'ai installé Nodejs. Une idée pourquoi?

Ici ma liste de pierres précieuses:

abstract (1.0.0)
actionmailer (3.1.0.beta1)
actionpack (3.1.0.beta1, 3.0.7)
activemodel (3.1.0.beta1, 3.0.7)
activerecord (3.1.0.beta1)
activeresource (3.1.0.beta1)
activesupport (3.1.0.beta1, 3.0.7)
ansi (1.2.5)
arel (2.1.0)
bcrypt-Ruby (2.1.4)
builder (3.0.0, 2.1.2)
bundler (1.0.13)
coffee-script (2.2.0)
coffee-script-source (1.1.0)
configuration (1.2.0)
daemon_controller (0.2.6)
erubis (2.7.0, 2.6.6)
execjs (1.0.0, 0.3.3)
fastthread (1.0.7)
heroku (2.1.4)
hike (1.0.0)
i18n (0.6.0beta1, 0.5.0)
jquery-Rails (1.0.1)
json (1.5.1)
json_pure (1.5.1)
launchy (0.4.0)
mail (2.3.0)
mime-types (1.16)
minitest (1.6.0)
multi_json (1.0.1)
mysql (2.8.1)
mysql2 (0.3.2)
oauth (0.4.4)
passenger (3.0.7)
polyglot (0.3.1)
rack (1.3.0.beta, 1.2.2)
rack-cache (1.0.1)
rack-mount (0.7.2, 0.6.14)
rack-ssl (1.3.2)
rack-test (0.6.0, 0.5.7)
Rails (3.1.0.beta1)
railties (3.1.0.beta1)
rake (0.8.7)
rdoc (2.5.8)
rest-client (1.6.1)
rubygems-update (1.8.1)
sass (3.1.1)
simplegeo (0.5.1)
sprockets (2.0.0.beta.2)
sqlite3 (1.3.3)
sqlite3-Ruby (1.3.3)
term-ansicolor (1.0.5)
therubyracer-heroku (0.8.1.pre3)
thor (0.14.6)
tilt (1.3)
treetop (1.4.9)
turn (0.8.2)
tzinfo (0.3.27)
uglifier (0.5.1)
38
WYi

Vous avez besoin d'un moteur JavaScript pour Rails 3.1 (Heroku n'en possède pas), et il semble que le moteur JavaScript qui fonctionne avec Heroku est le Rubyracer for Herok .

Les rails utilisent Execjs pour exécuter JavaScript et Execjs prend en charge 7 moteurs JavaScript. Node.js en est un et Rubyracer en est un.

Dillon goyré eu un problème similaire et écrit à ce sujet. Dans la section Commentaires, un point a été soulevé à propos de la modification d'une production uniquement, car vous avez déjà NODEJS comme moteur JavaScript local. Donc, le code pertinent est:

group :production do
  gem 'therubyracer-heroku', '0.8.1.pre3'
end

Mise à jour: Heroku a une nouvelle pile, appelée cédar , qu'ils recommandent pour Rails== 3.1.0. (Run heroku stack Pour voir quelle pile votre application est activée.) Heroku a aussi un doc sur la mise à niveau vers Rails 3.1.0 RC5. Ils recommandent non Utilisation de la gemme "Therubyracer-Heroku", car il n'est pas nécessaire avec RC5.

Si vous effectuez une mise à niveau d'un ancien RC, assurez-vous de mettre à jour votre fichier CONFIG/Application.rb et exécutez également cette commande:

heroku config:add PATH=vendor/bundle/Ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin:bin

Apparemment, cela est défini dans de nouvelles applications, mais les applications existantes n'ont pas défini sur ce chemin.

50
c3rin

Vous n'avez pas nécessairement besoin d'un exécution JavaScript pour déployer Rails 3.1 Beta à Heroku.

Le jeu d'exécution JavaScript n'est requis que si vous utilisez JavaScript sur le déploiement (c'est-à-dire via le Uglifier GEM) ou si vous utilisez un script de café.

On dirait que cette dépendance d'exécution JavaScript ne sera pas là pour la version finale de 3.1.

Au cas où vous ne vous dérangeriez pas de ne pas minier votre JavaScript (et aussi si vous n'utilisez pas de script de café), vous pouvez commenter le Coffee-Script, Uglififier et Execjs Gems dans le Gemfile et également commentant config.assets.js_compresseur Dans votre Production.rb Et vous devriez être prêt à partir.

8
caike

Dans mon cas, cela s'est passé après avoir réussi à télécharger à Heroku et à accéder à la page.

ActionView::Template::Error (Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
2012-01-09T08:21:19+00:00 app[web.1]:   (in /app/app/assets/javascripts/page.js.coffee)):

Définition du chemin à l'aide de 'Heroku Config: Ajouter un chemin bla' n'a pas aidé.

"Actifs de râteau: précompile" vient de résoudre le résolu.

J'espère que cela aide n'importe qui comme moi!

1
nextofsearch