RailsのScaffold後、rails sしてブラウザアクセスするとExecJS::RuntimeError in Users#index

ドットインストールでRailsの勉強していますが、[#04 Scaffoldを使ってみよう](http://dotinstall.com/lessons/basic_rails_v2/24904)で早速つまづいた。

ローカルの環境はMac+rbenvで構築したもの

エラー内容は以下のようなもので、途中のトレースは省略

* Showing /Users/{user_name}/Development/dotinstall-lesson/tryapp/app/views/layouts/application.html.erb where line #6 raised:

で、最後は

* in /Users/{user_name}/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/turbolinks-2.3.0/lib/assets/javascripts/turbolinks.js.coffee

```html+erb:scafold_app/app/views/layouts/application.html.erb
<head>
    <title>DotinstallLesson</title>
    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
    <%= csrf_meta_tags %>
</head>
```

とある。

検索すると、いくつか解決策らしきものが出てくるけど、根本原因がよくわからない、Windowsだと発生するみたいな情報もあるけど、こちらはMacな環境

* [Windows 8 で ExecJS::RuntimeError が出たときは - Ruby on Rails with OIAX](http://www.oiax.jp/rails3book/execjs-runtime-error-on-windows8.html)

上記では、execjsのソース？を編集するということだけど、なんかそれは違う気がする

そのほかだとExecJSをgemでインストールし直したら、うまくいった、みたいなものもある

* [Rails - 【初心者】ExecJS::RuntimeErrorでつまづいたら - Qiita](http://qiita.com/timadayon/items/02e16b491c5f32efea80)
* [【初心者速報】Rails実行しようとしたらExecjsがどうとか… - Qiita](http://qiita.com/timadayon/items/21201378bbb6034c9edb)

ExecJSがちゃんと読み込まれていないとか、そういう話？

もう少し色々見て行くと、冒頭に書いたScaffoldで自動生成されたテンプレートファイルを編集すると直る的なことが書かれている

* [ExecJS::RuntimeErrorに関するメモ | mydebris](http://mydebris.wordpress.com/2014/05/11/execjsruntimeerror%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%A1%E3%83%A2/)

そもそもExecJSが動く際にサポートしているJSのエンジンruntimeがないってことかもしれない...

* [ruby on rails 3.1 - ExecJS and could not find a JavaScript runtime - Stack Overflow](http://stackoverflow.com/questions/6282307/execjs-and-could-not-find-a-javascript-runtime)
* [sstephenson/execjs - GitHub](https://github.com/sstephenson/execjs#readme)

> ExecJS lets you run JavaScript code from Ruby. It automatically picks the best runtime available to evaluate your JavaScript program, then returns the result to you as a Ruby object.
> 
> ExecJS supports these runtimes:
> 
>     therubyracer - Google V8 embedded within Ruby
>     therubyrhino - Mozilla Rhino embedded within JRuby
>     Node.js
>     Apple JavaScriptCore - Included with Mac OS X
>     Microsoft Windows Script Host (JScript)

Mac環境下でも、Apple JavaScriptCoreをサポートしているっぽいけど、ローカル環境はHomebrewやrbenvで構築しているから、各ライブラリ間の参照関係とかが上手くリンクしていないのかもしれない？

ということで、`brew list`で確認したけど、ちゃんと入っているぞ

```shell-session
$ brew list
ansible		git		libyaml		pkg-config	ruby
autoconf	libgpg-error	node		rbenv		ruby-build
gdbm		libksba		openssl		readline
```

当然、`node -v`も`which node`も返ってくる

```shell-session
$ node -v
v0.10.1
$ which node
/usr/local/bin/node
```

結果、Gemfileを編集して、`gem 'execjs'`を追記して`bundle install`してみたが、それでは上手くいかず、テンプレートファイルを編集して、`javascript_include_tag 'application'`を`javascript_include_tag 'defaults'`にしたらエラーは解決した

ちなみに、`default`でも「s」のついた`defaults`でも、どちらでも上手く行った... なぜ？

`javascript_include_tag`と`'application'`, `'defaults'`あたりを調べれば、根本的なことがわかるかな... 取り敢えず、レッスンを続けたいので、このエラーに再会したらまた調べる

以下、ちょっと調べた時に出てきたもの、関係あるかな？

* [Ruby - Rails 4 で turbolinks をオフにする方法 - Qiita](http://qiita.com/kazz187/items/12737363d62b9c91993c)

[追記 09/07, 2014]

分かったかも、`rails s`してhttp://localhost:3000/にアクセスして、"About your application’s environment"にアクセスすると"JavaScript Runtime Node.js(V8)"とある

"V8"は、"therubyracer - Google V8 embedded within Ruby"の"V8"だろうから...

結果、テンプレートの`javascript_include_tag`は`'application'`のままで、アプリ直下のGemfileを編集して、コメントアウトされていた`gem 'therubyracer',  platforms: :ruby`を有効にして、`bundle install`して、therubyracer以外もいくつかインストールされて、うまく動くようになった

```shell-session
Installing libv8 3.16.14.3
Installing ref 1.0.5
Installing therubyracer 0.12.1
```