HerokuのRuby 1.9.2でExecJS::RuntimeUnavailable
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エンジンのコンパイルに時間がかかりすぎるのでお勧めできませんし試してません。