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

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

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

поэтому я обновил свой gemfile с предложенным драгоценным камнем так:

gem 'therubyracer', '~ > 0.9.9'

EDIT: я также попытался добавить в файл:

gem 'therubyracer',: платформы => : Руби

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

затем пакет установлен на моем Macbook (работает под управлением OS X 10.5.8) без заминки. Однако это не удается, когда я запускаю "cap deploy", чтобы надеть Dreamhost; я вижу ошибку, когда он пытается установить libv8, от которого зависит therubyracer.

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

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

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

  • выполнение " cd / home/futureproof / abunchofletters.co.Великобритания / релизы / 20111118003703 && пакет установки-файле / главная/futureproof / abunchofletters.co.Великобритания / релизы/20111118003703/Gemfile -- путь / домой / futureproof/.gems / bundle --deployment --quiet --без тестирования разработки" серверы: ["abunchofletters.co.Великобритания"] [абунхофлеттерс.co.uk] выполнение команды * * [out:: abunchofletters.co.uk] к сожалению, произошла фатальная ошибка. Пожалуйста, сообщите об этой ошибке в Bundler issue tracker по адресу https://github.com/carlhuda/bundler/issues чтобы мы могли это исправить. Спасибо! *[out:: abunchofletters.co.Великобритания] / 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] from / 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] from /главная/перспективная/.драгоценные камни / 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 /главная/перспективная/.драгоценные камни / 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 /главная/перспективная/.драгоценные камни / 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 /главная/перспективная/.драгоценные камни / 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.Великобритания] от /главная/перспективная/.драгоценные камни / 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 установить ' * * [out:: abunchofletters.co.uk] from /главная/перспективная/.драгоценные камни / 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] from /главная/перспективная/.драгоценные камни / 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 /главная/перспективная/.драгоценные камни / 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 /главная/перспективная/.самоцветы / ящик / пачка:19 команда закончена в 13170ms *** [развертывание:update_code] откат * выполнение " rm-rf / home/futureproof / abunchofletters.co.uk / releases / 20111118003703; true" серверы: ["abunchofletters.co.Великобритания"] [абунхофлеттерс.co.uk] выполнение команды команда завершена в 563ms не удалось: "sh-c' cd / главная/futureproof / abunchofletters.co.Великобритания / релизы / 20111118003703 && пакет установки-файле / главная/futureproof / abunchofletters.co.Великобритания / релизы/20111118003703/Gemfile -- путь / домой / futureproof/.gems / bundle --deployment --quiet --без тестирования разработки' " на abunchofletters.co.Великобритания

8 ответов


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

sudo apt-get install libv8-dev

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

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


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

sudo apt-get install nodejs

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

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.


Я нахожусь на общем сервере dreamhost.

Я установил 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 добавляет свой путь к развертыванию.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"

Вы молодец


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

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

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

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

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

одно замечание заключается в том, что вы должны переключиться на 1.9.2 также.
Установить РВМ (bash https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)) и вы можете иметь оба 1.8.7 и 1.9.2 бок о бок.


Я только что столкнулся с той же проблемой на моей машине Win7 dev. Похоже, установка 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]
(...)

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

просто перейдите к терминалу и введите:

sudo apt-получить установить узел.js

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


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

gem "therubyracer", "~ > 0.10.2"