web-dev-qa-db-fra.com

Impossible de trouver un runtime JavaScript. Voir https://github.com/sstephenson/execjs pour une liste des temps d'exécution disponibles. (ExecJS :: RuntimeUnavailable)

Mon site Web est en panne depuis que Dreamhost a mis à niveau ses serveurs il y a quelques semaines. J'ai arraché mes cheveux en essayant de les réparer et j'ai fait des progrès, mais je suis coincé sur ce qui, espérons-le, sera le dernier problème.

J'utilise Rails 3.1.1 sur Ruby 1.8.7 et je reçois une erreur "L'application Ruby (Rack) n'a pas pu être démarrée" dans PhusionPassenger . Il indique qu'il "n'a pas pu trouver un runtime JavaScript. Voir https://github.com/sstephenson/execjs pour une liste des temps d'exécution disponibles. (ExecJS :: RuntimeUnavailable)". Recherche de ce sur le wiki de Dreamhost a suggéré une solution pour installer la gemme 'therubyracer'.

J'ai donc mis à jour mon gemfile avec la gemme suggérée comme ceci:

gem 'therubyracer', '~> 0.9.9'

EDIT: J'ai également essayé d'ajouter au fichier avec:

gem 'therubyracer',: plates-formes =>: Ruby

mais cela n'a pas fait de différence.

Puis bundle installé sur mon Macbook (sous OS X 10.5.8) sans accroc. Cependant, cela échoue lorsque j'exécute "cap deploy" pour mettre Dreamhost; Je vois une erreur lors de la tentative d'installation de libv8 dont dépend therubyracer.

Quelqu'un sait comment installer cela correctement ou toute autre solution de travail?

Toute autre information peut être fournie sur demande.

Retour d'erreur complet du terminal:

  • exécution de "cd /home/futureproof/abunchofletters.co.uk/releases/20111118003703 && bundle install --gemfile /home/futureproof/abunchofletters.co.uk/releases/20111118003703/Gemfile --path /home/futureproof/.gems/ bundle --deployment --quiet --without development test "serveurs: [" abunchofletters.co.uk "] [abunchofletters.co.uk] exécutant la commande ** [out :: abunchofletters.co.uk] Malheureusement, une erreur fatale s'est produit. Veuillez signaler cette erreur au système de suivi des problèmes de Bundler à l'adresse https://github.com/carlhuda/bundler/issues afin que nous puissions la corriger. Merci! ** [out :: abunchofletters.co.uk] /usr/lib/Ruby/1.8/rubygems/installer.rb:483:in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) ** [out :: abunchofletters.co.uk] ** [out :: abunchofletters.co.uk] /usr/bin/Ruby1.8 extconf.rb ** [out :: abunchofletters.co.uk] *** extconf.rb failed *** ** [out :: abunchofletters.co.uk] Could not create Makefile due to some reason, probably lack of ** [out :: abunchofletters.co.uk] necessary libraries and/or headers. Check the mkmf.log file for more ** [out :: abunchofletters.co.uk] details. You may need configuration options. ** [out :: abunchofletters.co.uk] ** [out :: abunchofletters.co.uk] Provided configuration options: ** [out :: abunchofletters.co.uk] --with-opt-dir ** [out :: abunchofletters.co.uk] --without-opt-dir ** [out :: abunchofletters.co.uk] --with-opt-include ** [out :: abunchofletters.co.uk] --without-opt-include=${opt-dir}/include ** [out :: abunchofletters.co.uk] --with-opt-lib ** [out :: abunchofletters.co.uk] --without-opt-lib=${opt-dir}/lib ** [out :: abunchofletters.co.uk] --with-make-prog ** [out :: abunchofletters.co.uk] --without-make-prog ** [out :: abunchofletters.co.uk] --srcdir=. ** [out :: abunchofletters.co.uk] --curdir ** [out :: abunchofletters.co.uk] --Ruby=/usr/bin/Ruby1.8 ** [out :: abunchofletters.co.uk] extconf.rb:13: uninitialized constant Gem (NameError) ** [out :: abunchofletters.co.uk] Checking for Python... ** [out :: abunchofletters.co.uk] ** [out :: abunchofletters.co.uk] Gem files will remain installed in /home/futureproof/.gems/bundle/Ruby/1.8/gems/libv8-3.3.10.4 for inspection. ** [out :: abunchofletters.co.uk] Results logged to /home/futureproof/.gems/bundle/Ruby/1.8/gems/libv8-3.3.10.4/ext/libv8/gem_make.out ** [out :: abunchofletters.co.uk] from /usr/lib/Ruby/1.8/rubygems/installer.rb:446:in each '** [out :: abunchofletters.co.uk] depuis /usr/lib/Ruby/1.8/rubygems/installer.rb:446:in build_extensions' ** [out :: abunchofletters.co.uk] from /usr/lib/Ruby/1.8/rubygems/installer.rb:198:in installez '** [out :: abunchofletters.co.uk] depuis /home/futureproof/.gems/gems/ bundler-1.1.rc/lib/bundler/source.rb: 90: in install' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/rubygems_integration.rb:78:in preserve_paths '** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler- 1.1.rc/lib/bundler/source.rb: 89: in install' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/installer.rb:73:in Install_gem_from_spec '** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1. rc/lib/bundler/rubygems_integration.rb: 93: in with_build_args' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/installer.rb:72:in install_gem_from_spec '** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/ lib/bundler/installer.rb: 56: dans run' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/installer.rb:55:in exécutez '** [out :: abunchofletters.co.uk] depuis /home/futureproof/.gems/gems/bundler-1.1.rc/lib/ bundler/installer.rb: 12: dans install' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/cli.rb:219:in installez '** [out :: abunchofletters.co.uk] depuis /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler /vendor/thor/task.rb:22:in send' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/vendor/thor/task.rb:22:in exécutez '** [out :: abunchofletters.co.uk] de /home/futureproof/.gems/gems/bundler-1.1.rc/lib /bundler/vendor/thor/invocation.rb:118:in invoke_task' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/vendor/thor.rb:263:in dispatch '** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc /lib/bundler/vendor/thor/base.rb:386:in start' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/bin/bundle:13 ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/bin/bundle:19:in load '** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/bin/bundle:19 commande terminée en 13170 ms *** [deploy: update_code] rollback * exécutant "rm -rf /home/futureproof/abunchofletters.co.uk/releases/20111118003703; true "serveurs: [" abunchofletters.co.uk "] [abunchofletters.co.uk] l'exécution de la commande s'est terminée en 563 ms a échoué:" sh -c 'cd /home/futureproof/abunchofletters.co.uk/releases/20111118003703 && bundle install --gemfile /home/futureproof/abunchofletters.co.uk/releases/20111118003703/Gemfile --path /home/futureproof/.gems/bundle --deployment --quiet --without development test '"on abunchofletters.co. Royaume-Uni
56
Rich

libv8 est une bibliothèque de système d'exploitation; vous devrez installer la bibliothèque système Linux appropriée. Si vous utilisez Ubuntu, c'est

Sudo apt-get install libv8-dev

Vous pouvez également installer node.js qui est disponible en tant que paquet Debian/Ubuntu pour diverses distributions, par exemple http://ppa.launchpad.net/chris-lea/node.js/ubunt

Vous pouvez vous épargner beaucoup de problèmes en déployant sur Heroku à la place où vous n'avez pas à gérer le système d'exploitation ou les composants pour les gemmes.

33
Wolfram Arnold

Si vous êtes sur Ubuntu, installez nodejs

Sudo apt-get install nodejs
131
Jim Clouse

j'utilise ces gemmes sur Dreamhost avec Rails 3.1 pour le pipeline d'actifs

group :assets do
  gem 'execjs'
  gem 'therubyracer', :platforms => :Ruby
  gem 'johnson'
  gem 'sass-Rails', "  ~> 3.1.0"
  gem 'coffee-Rails', "~> 3.1.0"
  gem 'uglifier'
end

therubyracer comme précompilateur et johnson comme runtime.

Cela fonctionne pour moi dans 2 Rails 3.1 applications hébergées par Dreamhost.

10

Je suis sur un serveur partagé dreamhost.

J'ai installé nodejs sans utiliser root/Sudo. Sur le serveur:

#download node js (check last version from web)
$ wget http://nodejs.org/dist/v0.8.16/node-v0.8.16-linux-x86.tar.gz
#untar
$ tar xzf node-v0.8.16-linux-x86.tar.gz

Finnaly ajoute son chemin au deploy.rb, en ajoutant la ligne suivante (quelques chemins supplémentaires sont ajoutés dans ce cas):

default_environment["PATH"] = ":/home/myUser/soft/node-v0.8.16-linux-x86/bin:/home/myUser/.gems/bin:/usr/lib/Ruby/gems/1.8/bin/:$PATH"

Vous avez terminé

5
Mateu

Je viens de voir une présentation à ce sujet.

J'ai utilisé du rubytheracer jusqu'à présent. Apparemment, ce n'est pas si génial. Et c'est énorme.

Mais vous pouvez utiliser n'importe quel runtime javascript.

Les deux autres recommandés sont execjs et node.js (qui est très chaud en ce moment).

Assurez-vous de gem install la gemme sélectionnée puis bundle install ou bundle update pour votre application.

Une autre remarque est que vous devriez également passer à 1.9.2.
Installer RVM (bash <<(curl -s https://raw.github.com/wayneeseguin/rvm/ master/binscripts/rvm-installer )) et vous pouvez avoir à la fois 1.8.7 et 1.9.2 côte à côte.

1
Michael Durrant

Je viens de rencontrer le même problème sur ma machine de développement Win7. Cela ressemble à installer https://github.com/hiranpeiris/therubyracer_for_windows et à ajouter gem 'therubyracer' au Gemfile trie les choses.

Avant:

$ Rails generate
c:/Ruby193/lib/Ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
    from c:/Ruby193/lib/Ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs.rb:5:in `<module:ExecJS>'
(...)

Cela signifie essentiellement que Rails a besoin de rubyracer et libv8.

Après:

$ Rails generate
    SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
    This poses a security threat. It is strongly recommended that you
    provide a secret to prevent exploits that may be possible from crafted
    cookies. This will not be supported in future versions of Rack, and
    future versions will even invalidate your existing user cookies.

    Called from: c:/Ruby193/lib/Ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/session/abstract_store.rb:28:in `initialize'.

Usage: Rails generate GENERATOR [args] [options]
(...)
1
Jakub Czaplicki

Je suggère d'installer Nodejs. Ça a marché pour moi.

Accédez simplement à votre terminal et saisissez:

Sudo apt-get install node.js

Entrez votre mot de passe ... Et appuyez sur 'Y' chaque fois qu'il vous demande une confirmation. J'espère que ça aide !!!

0

Ajoutez la gemme suivante dans Gemfile et essayez avec l'installation du bundle

gemme "therubyracer", "~> 0.10.2"

0
rahul patil