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:inbuild_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: ininstall' ** [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: ininstall' ** [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: inwith_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: dansrun' ** [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: dansinstall' ** [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:insend' ** [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:ininvoke_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:instart' ** [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
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.
Si vous êtes sur Ubuntu, installez nodejs
Sudo apt-get install nodejs
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.
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é
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.
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]
(...)
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 !!!
Ajoutez la gemme suivante dans Gemfile et essayez avec l'installation du bundle
gemme "therubyracer", "~> 0.10.2"