実践で学ぶRuby on rails 〜仮説千本ノック〜

プログラマーとして独立するため日々スキルアップに励んでいます。優れたプログラマは仮説を立てるのがうまい。そこを目指して仮説を立てては検証する日々です!!

本番環境secret_key_base生成時のエラー

railsの本番環境にて、

Cokkieの暗号化に用いる文字列secret_key_baseを作成します。

 

作成コマンドを実行

[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ rake secret

 

成功時には、secret_key_baseの文字列が表示されるのだが、 

 エラーが発生

 

cound not find a Javascript runtime

See https://github.com/rails/execjs for a list of available runtimes.

エラー文によると、問題は、Javascriptを実行するために必要なもの(runtime)が見つからないため、githubをみて、必要なruntimeを確認せよとのこと。

githubを確認してみる。

ExecJsとは、gemの一種で、数種類runtimeをサポートしているとのこと。

その中から適切なものをインストールしようと考えたところ、説明文を読んでも、ネットで調べてもどれが、自分の環境にあったruntimeなのか、判別ができない。(うちの一つtherubyracerの後継がmini_racerのようです)

さらに解決法を検索したところ、
mini_racerというruntimeをインストールしてエラー解消した事例を発見。

そこで、ローカルで、gemfileの本番環境の部分にmini_racerを追加し、bundleし、pushした。その後、EC2において、先ほどpushした内容をgit pullしたところエラー解決した。

どうやら、mini_racerとは、javascriptのコードを実行するためのJavascriptエンジンであるV8と一種であるとのこと。

mini_racerがruntimeなのかは明記されてないが、少なくとも、javascriptのコードを実行するという役割は共通している。