Ruby on Railsで bin/rails sでエラーが起きる場合

2020年5月14日

いざRuby on Railsのアプリケーションを作って動作確認を行おうと実行したはいいが、エラーで動かない場合、エラー内容を確認してみましょう。Gemfileを修正することで簡単に復帰する場合があります。ちょっと前までは動いてたのに!という人も、PCの内部の更新影響で動かなくなることもあるので確認してみてください。

復帰手順

エラーの内容が、以下のような場合は下記手順で修正できるはずです。(本来は1行ですが、こちらで改行して表示しています)

/Users/PC名/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in 
autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
(ExecJS::RuntimeUnavailable)

Gemfile更新

プロジェクトにあるGemfileに[gem 'therubyracer’]を追加してください。場所はどこでもいいと思いますが、自分はなんとなくracerつながりで似たようなところの後ろに追加しました。

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby
gem 'therubyracer'

Gemfileの更新が終わったら、「bundle update」コマンドで更新内容を反映してください

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...

こんな表示が出て、依存関係の問題が解決するそうです。

あとは動かして確認

Gemfileの更新と反映が完了したら、アプリケーションを立ち上げてみましょう。

「bin/rails s」

起動後にhttp://localhost:3000/とかにアクセスして正しく表示されればOK!

何が問題だったのか

エラー内容的にJavaScriptのランタイムがねーよ!ってことなのでそれを解消すればいいとのこと。一応githubのサイト見ろ!ってあるのでインストール可能なランタイムを入れればいいらしいです(よくわかってない)

この他の解決方法として、Node.jsを入れることでも解決できるらしいです。

参考文献・サイト

ベストアンサー
https://qiita.com/azusanakano/items/771dc9919f347de061d7

ベストアンサーの参考サイト
http://pyoonn.hatenablog.com/entry/2014/10/17/165416

ちゃんと見るべきサイト
https://github.com/sstephenson/execjs