WindowsのRuby on Railsで「cannot load such file ~~ sqlite3_native」と「ExecJS::ProgramError」の解決法

WindowsのRuby on Railsで「cannot load such file ~~ sqlite3_native」と「ExecJS::ProgramError」の解決法久しぶりに更新です。

PHPばかりやってましたが、マンネリ化してきているのでRubyを始めました。

Rubyといえば、Ruby on Railsということで早速、チャレンジ!

Ruby on  Rails のチュートリアルの環境構築で2か所つまずいたのでメモ

WindowsのRuby on Railsで「cannot load such file ~~ sqlite3_native」と「ExecJS::ProgramError」の原因と解決法

WindowsのRuby on Railsで「cannot load such file ~~ sqlite3_native」の原因と解決法

よし! railsもインストールしたし、rails serverを実行! これで画面が出たらOKだ!と思った矢先、「cannot load such file ~~ sqlite3_native」と出てしまった

「cannot load such file ~~ sqlite3_native」の原因

Rubyのバージョンとsqlite3のバージョンが一致していない(sqlite3が新しいRubyのバージョンをサポートしていない)のが原因です。

ちなみに「\(Rubyのフォルダ)\lib\ruby\gems\2.3.0\gems\sqlite3-1.3.13-x86-mingw32\lib\sqlite3」にあるフォルダを見てみると、2.5というフォルダがありません!

私はRubyの2.5系をインストールしており、Railsさんが2.5用のフォルダを参照しようとしたものの2.5用のフォルダが無いので怒られていたわけです。

まぁ、環境構築あるあるの一種ですね。

「cannot load such file ~~ sqlite3_native」の解決方法

2つあります。

  1. Rubyのバージョンを下げる
    1. Rubyをアンインストールし、古いバージョンのRubyをインストールします。(例、2.5系 → 2.5系)
  2. RailsInstallerを使う
    1. RubyとRails、その他、必要なものが全部コミコミでインストールしてくれる優れものです。ちょっとバージョンが古いものしか対応してませんが楽です。とりあえず動かしたい人向け。

WindowsのRuby on Railsで「ExecJS::ProgramError」の原因と解決法

環境構築したはいいものの、サンプル通りに動かすと

ExecJS::ProgramError

というエラーが出て動きません。

ExecJS::ProgramErrorの原因

どうやら、jsとして使われているCoffeeScriptのバージョンが原因の模様

特定のバージョン以上だとなるらしい。

ExecJS::ProgramErrorの解決方法

以下のようにやったら、解決しました。

  1. プロジェクトフォルダの中のGemfileの最後に gem ‘coffee-script-source’, ‘1.8.0’ を追加して上書き保存
  2. コマンドプロンプトで bundle update coffee-script-source を入力して実行
  3. Node.jsをインストール
  4. ローカルのサーバーを再起動
    1. rails serverで立ち上げていたサーバーをCtrl + Cで終了
    2. 再度, rails serverと入力し、サーバーを起動

※なぜNode.jsが必要なのか不明ですが、CoffeeScriptをJavaScriptにコンパイルするうえで必要らしい? Ruby on Railsだと標準ではCoffeeScriptをサポートしているため、CoffeeScriptを使用しなければエラーにはならないはず。

まとめ

環境構築って手間が掛かるよねぇ。

RailsInstallerおすすめ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする