Проблема при развертывании проекта Rails 3.1 в Heroku: не удалось найти среду выполнения JavaScript - PullRequest
38 голосов
/ 20 мая 2011

У меня проблемы с развертыванием бета-проекта rails 3.1 на heroku. Проблема возникла на этапе миграции базы данных. Когда я побежал:

heroku rake db:migrate

Я получил сообщение об ошибке:

> rake aborted! 

> Could not find a JavaScript runtime. See
> https://github.com/sstephenson/execjs
> for a list of available runtimes.

> /app/Rakefile:5 

> (See full trace by running task with --trace) 

> (in /app)

Но я могу успешно запустить приложение локально, и у меня установлен nodejs. Есть идеи почему?

Вот мой список драгоценных камней:

abstract (1.0.0)
actionmailer (3.1.0.beta1)
actionpack (3.1.0.beta1, 3.0.7)
activemodel (3.1.0.beta1, 3.0.7)
activerecord (3.1.0.beta1)
activeresource (3.1.0.beta1)
activesupport (3.1.0.beta1, 3.0.7)
ansi (1.2.5)
arel (2.1.0)
bcrypt-ruby (2.1.4)
builder (3.0.0, 2.1.2)
bundler (1.0.13)
coffee-script (2.2.0)
coffee-script-source (1.1.0)
configuration (1.2.0)
daemon_controller (0.2.6)
erubis (2.7.0, 2.6.6)
execjs (1.0.0, 0.3.3)
fastthread (1.0.7)
heroku (2.1.4)
hike (1.0.0)
i18n (0.6.0beta1, 0.5.0)
jquery-rails (1.0.1)
json (1.5.1)
json_pure (1.5.1)
launchy (0.4.0)
mail (2.3.0)
mime-types (1.16)
minitest (1.6.0)
multi_json (1.0.1)
mysql (2.8.1)
mysql2 (0.3.2)
oauth (0.4.4)
passenger (3.0.7)
polyglot (0.3.1)
rack (1.3.0.beta, 1.2.2)
rack-cache (1.0.1)
rack-mount (0.7.2, 0.6.14)
rack-ssl (1.3.2)
rack-test (0.6.0, 0.5.7)
rails (3.1.0.beta1)
railties (3.1.0.beta1)
rake (0.8.7)
rdoc (2.5.8)
rest-client (1.6.1)
rubygems-update (1.8.1)
sass (3.1.1)
simplegeo (0.5.1)
sprockets (2.0.0.beta.2)
sqlite3 (1.3.3)
sqlite3-ruby (1.3.3)
term-ansicolor (1.0.5)
therubyracer-heroku (0.8.1.pre3)
thor (0.14.6)
tilt (1.3)
treetop (1.4.9)
turn (0.8.2)
tzinfo (0.3.27)
uglifier (0.5.1)

Ответы [ 4 ]

50 голосов
/ 20 мая 2011

Вам нужен движок JavaScript для Rails 3.1 (у heroku его нет), и похоже, что движок JavaScript, который работает с Heroku, является rubyracer для heroku .

Railsиспользует execjs для выполнения JavaScript и execjs поддерживает 7 движков JavaScript.Node.js один, а rubyracer один.

У Джерреда Диллона была похожая проблема, и он писал об этом.В разделе комментариев был поднят вопрос о том, чтобы сделать это производственным изменением, поскольку у вас уже есть nodejs в качестве локального механизма JavaScript.Поэтому соответствующий код:

group :production do
  gem 'therubyracer-heroku', '0.8.1.pre3'
end

ОБНОВЛЕНИЕ: В Heroku появился новый стек, который называется Cedar , который они рекомендуют для Rails 3.1.0.(Запустите heroku stack, чтобы узнать, в каком стеке находится ваше приложение.) Heroku также имеет документ о переходе на Rails 3.1.0 rc5.Они рекомендуют , а не , используя камень 'therubyracer-heroku', так как он больше не нужен для rc5.

Если вы обновляетесь со старого rc, обязательно обновите ваш config / application.rbфайл, а также выполните эту команду:

heroku config:add PATH=vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin:bin

Очевидно, это установлено в новых приложениях, но существующие приложения не установили этот PATH.

8 голосов
/ 21 июня 2011

Для развертывания бета-версии Rails 3.1 на heroku необязательно требуется среда выполнения JavaScript.

Среда выполнения JavaScript требуется только в том случае, если вы минимизируете JavaScript при развертывании (т. Е. Через uglifier gem) или если вы используете coffee-script.

Похоже, что эта зависимость от времени выполнения javascript не будет присутствовать в финальной версии 3.1.

В случае, если вы не возражаете против минификацииВаш javascript (а также, если вы не используете coffee-script), вы можете закомментировать coffee-script, uglifier и execjs gem в Gemfile, а также закомментировать config.assets.js_compressor в вашем production.rb и вам будет хорошо.

5 голосов
/ 23 июня 2011

По состоянию на дату этого поста вам еще нужно указать

самоцвет 'therubyracer-heroku', '0.8.1.pre3'

в вашем gemfile для успешного развертывания приложения Rails 3.1 на платформе Heroku Cedar.

Несмотря на то, что можно развернуть приложения Node на платформе Cedar, сам Node отсутствует в стеке Cedar при развертывании приложений Rails, поэтому вам необходимо связать собственную среду выполнения javascript.

Пока.

Я знаю, что люди на стороне Rails работают над устранением зависимости от наличия js-среды выполнения, http://yehudakatz.com/2011/06/14/what-the-hell-is-happening-to-rails/ и я уверен, что Heroku также ищет способы заставить развертывание Rails 3.1 просто работать.

1 голос
/ 09 января 2012

В моем случае это произошло после успешной загрузки в Heroku и доступа к странице.

ActionView::Template::Error (Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
2012-01-09T08:21:19+00:00 app[web.1]:   (in /app/app/assets/javascripts/page.js.coffee)):

Установка пути с помощью 'heroku config: add PATH blah' не помогла.

"rake assets: precompile" только что решил эту проблему.

Надеюсь, это поможет любому, как я!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...