2011-11-09 8 views
53

Moja strona internetowa została uszkodzona od czasu, gdy Dreamhost zaktualizował swoje serwery kilka tygodni temu. Odrąbałem sobie włosy, próbując je naprawić i poczyniłem pewne postępy, ale utknąłem na tym, co jest miejmy nadzieję ostatnią kwestią.Nie można znaleźć środowiska wykonawczego JavaScript. Zobacz https://github.com/sstephenson/execjs po listę dostępnych środowisk wykonawczych. (ExecJS :: RuntimeUnavailable)

Używam Rails 3.1.1 na Ruby 1.8.7 i otrzymuję prezent z "aplikacji Ruby (Rack) nie można uruchomić błąd" z PhusionPassenger. Stwierdza, że ​​"Nie można znaleźć środowiska wykonawczego JavaScript. Zobacz https://github.com/sstephenson/execjs, aby uzyskać listę dostępnych środowisk wykonawczych. (ExecJS :: RuntimeUnavailable) ". Szukanie tego na wiki Dreamhosta zasugerowało rozwiązanie, aby zainstalować klejnot "therubyracer".

Więc aktualizowane mój gemfile z sugerowanym gem tak:

gem 'therubyracer', '~> 0.9.9'

EDIT: Próbowałem również dodanie do pliku z:

gem 'therubyracer': platformy =>: rubin

, ale to nie miało znaczenia.

Następnie pakiet zainstalowany na moim MacBooku (z systemem OS X 10.5.8) bez żadnych problemów. Jednak to się nie powiedzie, gdy uruchomię "cap caploy", aby uruchomić Dreamhost; Widzę błąd podczas próby zainstalowania libv8, od którego zależy terminarz.

Ktoś wie, jak to zrobić, aby prawidłowo zainstalować lub inne działające rozwiązanie?

Wszelkie inne informacje można uzyskać na życzenie.

Pełna sprzężenia zwrotnego o błędzie z Terminalu:

  • wykonujące „cd /home/futureproof/abunchofletters.co.uk/releases/20111118003703 & & pakiet zainstalować --gemfile /home/przyszłościowe/abunchofletters .pl/releases/20111118003703/Gemfile - ścieżka /home/futureproof/.gems/bundle --deployment --quiet - bez testu programistycznego " serwery: [" abunchofletters.co.uk "] [abunchofletters .co.uk] wykonanie polecenia ** [out :: abunchofletters.co.uk] Niestety wystąpił błąd krytyczny. Proszę zgłosić ten błąd do modułu śledzenia problemów w pakiecie pod numerem https://github.com/carlhuda/bundler/issues, abyśmy mogli go naprawić. Dzięki! ** [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 każdy '** [out :: abunchofletters.co.uk] od /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 zainstaluj '** [out :: abunchofletters.co.uk] od /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] od /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] od /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] od /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/installer.rb:56:in run' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/installer.rb:55:in uruchom "** [out :: abunchofletters.co.uk] od /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/installer.rb:12:in install' ** [out :: abunchofletters.co.uk] from /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/cli.rb:219:in zainstalować '* * [out :: abunchofletters.co.uk] od /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 uruchom "** [out :: abunchofletters.co.uk] od /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 wysyłka '** [ out :: abunchoflett ers.co.uk] od /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] od /home/futureproof/.gems/bin/bundle:19 Komenda zakończona 13170ms *** [wdrożyć: kod_aktualizacji] wycofywanie * wykonywanie "rm -rf /home/futureproof/abunchofletters.co .uk/releases/20111118003703; true " serwery: [" abunchofletters.co.uk "] [abunchofletters.co.uk] wykonanie polecenia polecenie zakończone w 563ms nie powiodło się:" sh -c 'cd /home/futureproof/abunchofletters.co.uk/releases/ 20111118003703 & & pakiet zainstalować --gemfile /home/futureproof/abunchofletters.co.uk/releases/20111118003703/Gemfile --path /home/futureproof/.gems/bundle --deployment --quiet --without testu rozwoju „” na abunchofletters.co.uk
+0

Czy ktoś ma jakieś pomysły? – Rich

Odpowiedz

33

libv8 to biblioteka systemu operacyjnego; musisz zainstalować poprawną bibliotekę systemu Linux. Jeśli używasz Ubuntu, to

sudo apt-get install libv8-dev 

Alternatywnie, można zainstalować node.js który jest dostępny jako pakiet Debiana/Ubuntu dla różnych dystrybucji, na przykładhttp://ppa.launchpad.net/chris-lea/node.js/ubuntu

Możesz zaoszczędzić sobie wielu kłopotów, wdrażając na Heroku zamiast tam, gdzie nie musisz zarządzać systemem operacyjnym lub komponentami dla klejnotów.

+1

Nie mam uprawnienia sudo na udostępnionym serwerze, ale udało mi się zainstalować plik node.js, który go rozwiązał. Zastanawiam się teraz nad poprawnym działaniem Heroku, ponieważ wydaje się, że niekończące się problemy sprawiają, że witryna Rails 3 działa z potokiem aktywów. – Rich

+1

@Rich, Heroku to zdecydowanie najlepsza opcja. Jako programista uważam, że nie chcę zajmować się wszystkim, co jest potrzebne do utrzymania serwera, zabezpieczenia, zainstalowanych poprawek, kopii zapasowych itp. W najlepszym razie jest to czasochłonne, w najlepszym wypadku bardzo kruche. Niech zrobią to eksperci, którzy robią to dobrze. –

1

ja tylko zobaczyłem prezentację na ten temat.

Do tej pory używałem rubika. Najwyraźniej nie jest tak świetnie. I jest ogromny.

Ale można użyć dowolnego środowiska uruchomieniowego javascript.

Dwa pozostałe polecane to execjs i node.js (który jest teraz bardzo gorący).

Upewnij się, że wybrano klejnot gem install, a następnie bundle install lub bundle update dla swojej aplikacji.

Jeszcze jedna uwaga jest taka, że ​​należy również przejść do wersji 1.9.2.
Zainstalować RVM (bash < < (curl -s)) i można mieć zarówno 1.8.7 i 1.9.2 obok siebie.

11

to wykorzystać kamienie na Dreamhost z szyn 3,1 do zasobów rurociągu

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 jako prekompilator i Johnson w czasie pracy.

Ta praca jest dla mnie 2 aplikacjami Rails 3.1 hostowanymi przez Dreamhost.

+0

Dzięki za komentarz. Czy jesteś na wspólnym serwerze Dreamhost lub VPS? Jaką wersję Ruby używasz? – Rich

122

Jeśli jesteś na Ubuntu zainstalować nodejs

sudo apt-get install nodejs 
+3

Działa na ubuntu natty dzięki :) –

+1

Dzięki, to rozwiązanie działa. – BlueDolphin

+0

thaks, pozdrowienia z Kolumbii – chenio

0

proponuję zainstalowanie Nodejs. To zadziałało dla mnie.

Wystarczy przejść do terminala i wpisać:

sudo apt-get install node.js

... Wprowadź swoje hasło i nacisnąć 'Y', gdy prosi o potwierdzenie. Mam nadzieję, że to pomoże !!!

+1

Tak jak powiedziałem w odpowiedzi Wolframa, nie mam pozwolenia sudo na mój wspólny serwer, ale to może dobrze działać dla tych, którzy to robią. – Rich

5

Jestem w serwerze współdzielonym dreamhost.

Zainstalowałem nodejs bez użycia root/sudo. Na serwerze:

#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 dodać swoją ścieżkę do deploy.rb, dodając następujący wiersz (kilka ścieżek są dodawane w tym przypadku):

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" 

Skończysz

+0

W moim przypadku ścieżka PATH dodana do deploy.rb była po prostu: 'default_environment [" PATH "] =" $ HOME/local/bin: $ PATH "' – Sunny

+0

Próbuję twojego rozwiązania, ale nie mogę znaleźć plik deploy.rb. Jak mogę go znaleźć? Czy muszę go gdzieś stworzyć? –

1

Właśnie dotknąłem tego samego problemu na mojej maszynie dev Win7. Wygląda na to, że zainstalowanie https://github.com/hiranpeiris/therubyracer_for_windows i dodanie gem 'therubyracer' do Gemfile rozwiązuje problem.

Przed:

$ 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>' 
(...) 

zasadzie oznacza to, że musi rubyracer Szyny i libv8.

Po:

$ 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] 
(...) 
0

Dodaj następujący klejnot w Gemfile i spróbuj z wiązki zainstalować

gem "therubyracer", "~> 0.10.2"

Powiązane problemy