Не удалось найти среду выполнения JavaScript.Смотрите https://github.com/sstephenson/execjs для списка доступных сред выполнения.(ExecJS :: RuntimeUnavailable) - PullRequest
56 голосов
/ 09 ноября 2011

Мой сайт был взломан с тех пор, как Dreamhost обновил свои серверы пару недель назад.Я рвал на себе волосы, пытаясь исправить это, и добился некоторого прогресса, но застрял в том, что, как мы надеемся, является последней проблемой.

Я использую Rails 3.1.1 на Ruby 1.8.7 и получаю«Не удалось запустить приложение Ruby (Rack)» из PhusionPassenger.В нем говорится, что «Не удалось найти среду выполнения JavaScript.См. https://github.com/sstephenson/execjs для списка доступных сред выполнения.(ExecJS :: RuntimeUnavailable)».В поисках этого в вики Dreamhost было предложено решение для установки гема 'therubyracer'.

Поэтому я обновил свой гемфайл, предложив следующий гем:

гем 'therubyracer', '~> 0.9.9 '

РЕДАКТИРОВАТЬ: Я также попытался добавить в файл с:

gem' therubyracer ',: platform =>: ruby ​​

но это не имело значения.

Затем комплектация была установлена ​​на моем Macbook (под управлением OS X 10.5.8) без заминки.Тем не менее, это не удается, когда я запускаю «cap deploy» для установки на Dreamhost;Я вижу ошибку при попытке установить libv8, от которой зависит therubyracer.

Кто-нибудь знает, как заставить это установить правильно или любое другое рабочее решение?

Любая другая информация может быть предоставлена ​​по запросу.

Полная ошибка обратной связи от терминала:

  • при выполнении "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 "серверы тестирования: [" abunchofletters.co.uk "] [abunchofletters.co.uk] выполнение команды ** [out :: abunchofletters.co.uk] К сожалению, произошла фатальная ошибка.Пожалуйста, сообщите об этой ошибке в систему отслеживания ошибок Bundler по https://github.com/carlhuda/bundler/issues, чтобы мы могли ее исправить.Спасибо!** [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 каждый '** [out :: abunchofletters.co.uk] из / 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 установить '** [out :: abunchofletters.co.uk] из /home/futureproof/.gems/gems/bundler-1.1.rc/lib / bundler / source.rb: 90: в 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] из /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] из /home/futureproof/.gems/gems/bundler-1.1.rc/lib/bundler/rubygems_integration.rb:93:в 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] из /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 run'** [out :: abunchofletters.co.uk] из /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 install' ** [out:: abunchofletters.co.uk] из /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 run '** [out :: abunchofletters.co.uk] из /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] из /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 загрузка '** [out :: abunchofletters.co.uk] из /home/futureproof/.gems/bin/bundle:19 команды завершена за 13170 мс *** [deploy: update_code] откат * выполнение "rm -rf / home"/futureproof/abunchofletters.co.uk/releases/20111118003703;true "серверы: [" abunchofletters.co.uk "] [abunchofletters.co.uk] выполнение команды завершено за 563 мс. Ошибка:" sh -c 'cd /home/futureproof/abunchofletters.co.uk/releases/20111118003703 && bundleустановить --gemfile /home/futureproof/abunchofletters.co.uk/releases/20111118003703/Gemfile --path /home/futureproof/.gems/bundle --deployment --quiet - без теста разработки '' на abunchofletters.co.Великобритания

Ответы [ 8 ]

129 голосов
/ 11 марта 2012

Если вы используете Ubuntu, установите nodejs

sudo apt-get install nodejs
33 голосов
/ 15 февраля 2012

libv8 - библиотека ОС;вам нужно установить правильную системную библиотеку Linux.Если вы работаете в Ubuntu, это

sudo apt-get install libv8-dev

В качестве альтернативы вы можете установить node.js, который доступен в виде пакета Debian / Ubuntu для различных дистрибутивов, например, http://ppa.launchpad.net/chris-lea/node.js/ubuntu

. Вы можетеизбавьте себя от многих проблем, развернув Heroku, вместо этого вам не нужно управлять ОС или компонентами для драгоценных камней.

10 голосов
/ 02 декабря 2011

я использую эти драгоценные камни на Dreamhost с Rails 3.1 для Asset Pipeline

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 как прекомпилятор и johnson как среда выполнения.

Это работает для меня в 2 приложениях Rails 3.1, размещенных на Dreamhost.

5 голосов
/ 19 декабря 2012

Я на общем сервере снов.

Я установил nodejs без использования root / sudo. На сервере:

#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 добавляет свой путь к deploy.rb, добавляя следующую строку (в этом случае добавляется еще несколько путей):

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"

Вы сделали

1 голос
/ 22 февраля 2013

Я только что столкнулся с той же проблемой на моей машине с Win7. Похоже, установка https://github.com/hiranpeiris/therubyracer_for_windows и добавление gem 'therubyracer' к Gemfile сортирует вещи.

До:

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

Это в основном означает, что Rails требуется rubyracer и libv8.

После того, как:

$ 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 голос
/ 18 ноября 2011

Я только что видел презентацию по этому вопросу.

Я использовал rubytheracer до сих пор. Видимо, это не так здорово. И это огромно.

Но вы можете использовать любую среду выполнения javascript.

Двумя другими рекомендуемыми являются execjs и node.js (который сейчас очень горячий).

Убедитесь, что gem install выбранный камень, а затем bundle install или bundle update для вашего приложения.

Еще одно замечание: вам также следует переключиться на 1.9.2.
Установите RVM (bash <<(curl -s <a href="https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer" rel="nofollow">https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)) и вы можете иметь одновременно 1.8.7 и 1.9.2.

0 голосов
/ 11 октября 2014

Добавьте следующий гем в Gemfile и попробуйте установить пакет

gem "therubyracer", "~> 0.10.2"

0 голосов
/ 21 июля 2012

Я бы предложил установить Nodejs .Это сработало для меня.

Просто зайдите в свой терминал и введите:

sudo apt-get install node.js

Введите свой пароль ... И нажмите 'Y 'всякий раз, когда он просит подтверждения.Надеюсь, это поможет !!!

...