Subscribed unsubscribe Subscribe Subscribe

HerokuのRuby 1.9.2でExecJS::RuntimeUnavailable

heroku

Sinatraアプリをherokuにpushすると、こんなエラーが起きました。

2011-10-05T11:32:54+00:00 app[web.1]: /app/.bundle/gems/ruby/1.9.1/gems/execjs-1.2.9/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

ひとつ前のコミットでは問題なく起動していました。なにを変えた?

CoffeeScriptを使おうと、Gemfileに追加しました。
ちなみに、ローカルでは問題なく動作しているので、herokuの問題のようです。

対策

追加でgemを入れましょう。

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

ローカルではいらないので、production指定で。

参考はやっぱり安心と信頼のstackoverflow
Problem deploying Rails 3.1 project to Heroku: Could not find a JavaScript runtime - Stack Overflow

他にも、execjsとrubyracerを入れれば動くという情報もありましたが、v8エンジンのコンパイルに時間がかかりすぎるのでお勧めできませんし試してません。