プログラミングといえば、環境構築から始まります。
PHPばかりやってましたが、マンネリ化してきているのでRubyを始めました。
Rubyといえば、Ruby on Railsということで早速、チャレンジ!
Ruby on Rails のチュートリアルの環境構築で2か所つまずいたのでメモ
Contents
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つあります。
- Rubyのバージョンを下げる
- Rubyをアンインストールし、古いバージョンのRubyをインストールします。(例、2.5系 → 2.5系)
- RailsInstallerを使う
- RubyとRails、その他、必要なものが全部コミコミでインストールしてくれる優れものです。ちょっとバージョンが古いものしか対応してませんが楽です。とりあえず動かしたい人向け。
WindowsのRuby on Railsで「ExecJS::ProgramError」の原因と解決法
環境構築したはいいものの、サンプル通りに動かすと
ExecJS::ProgramError
というエラーが出て動きません。
ExecJS::ProgramErrorの原因
どうやら、jsとして使われているCoffeeScriptのバージョンが原因の模様
特定のバージョン以上だとなるらしい。
ExecJS::ProgramErrorの解決方法
以下のようにやったら、解決しました。
- プロジェクトフォルダの中のGemfileの最後に gem ‘coffee-script-source’, ‘1.8.0’ を追加して上書き保存
- コマンドプロンプトで bundle update coffee-script-source を入力して実行
- Node.jsをインストール
- ローカルのサーバーを再起動
- rails serverで立ち上げていたサーバーをCtrl + Cで終了
- 再度, rails serverと入力し、サーバーを起動
※なぜNode.jsが必要なのか不明ですが、CoffeeScriptをJavaScriptにコンパイルするうえで必要らしい? Ruby on Railsだと標準ではCoffeeScriptをサポートしているため、CoffeeScriptを使用しなければエラーにはならないはず。
まとめ
環境構築って手間が掛かるよねぇ。
RailsInstallerおすすめ。