目的
Windows10にてRuby on Railsの環境を構築する。
他の方のqiitaの記事等を参考にしているが、どのにも載っていなかったエラーの対策方法もあったため一応記事にした。
環境
Windows10 64bitマシン
構築
1.rubyインストール
ダウンロードはこちらからRubyInstallerをダウンロードしてきて行う。rubyのversionは2.4系を使用する。
2019年2月5日現在だと、画像のRuby+Devlit 2.4.5-1 (x64)をダウンロードしてくる。
仮に、2.5系だとsqliteに対応しておらず、後々めんどくさい。
ダウンロード後、RubyInstallerを実行する。あとはライセンスに同意してクリック及びエンターしていくだけである。途中でコマンドプロンプトが立ち上がり2点ほど選択を要求されるが、どちらも気にせずエンターを押せばよい。
コマンドプロンプトが閉じればrubyのインストールは完了である。インストール後下記のように確認する。versionが表示されればOKである。一応合わせてRubygemsのversionも確認しておくとよい。
C:\path>ruby -v
ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]
C:\path>gem -v
2.6.14.3
2.bundlerインストール
bundlerが何なのかは各々調べてほしい。
bundlerのインストールと確認の方法は以下である。
C:/path>gem install bundler
Fetching: bundler-2.0.1.gem (100%)
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Installing ri documentation for bundler-2.0.1
Done installing documentation for bundler after 5 seconds
1 gem installed
C:\path>bundler -v
Bundler version 2.0.1
3.sqlite3のダウンロード
この環境構築ではsqlite3を使用する。Railsがデータベースを利用し、デフォルトで使用するデータベースがsqlite3だからである。
sqlite3はこちらからダウンロードする。
Railsからsqlite3を利用するにはsqlite3.dllとsqlite3.exeが必要である。
下記画像だと、sqlite-dll-win64-x64-3260000.zipに.dll,sqlite-tools-win32-x86-3260000.zipに.exeファイルが入っているので、各々をダウンロード及び解凍し、中身をすべて環境PATHが通っているとこに置く。(今回はruby.exeの入っているディレクトリ)
環境PATHの通っているところに置くと下記のようにsqlite3コマンドが使えるようになる。
C:\path>sqlite3 --version
3.26.0 2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9
4.Rails導入・実行
次にRailsを導入していく。Railsは下記コマンドでインストールでき、railsコマンドが使用できるようになる。
C:\path>gem install rails
(省略)
gem install rails
C:\path>rails -v
Rails 5.2.2
Railsのインストール後任意の場所にRailsプロジェクト用のディレクトリーを作り、railsコマンドでwebアプリケーションを作っていく。そのやり方はおそらく下記のように書かれていることが多い。
C:/path>mkdir sample
C:/path>cd sample
C:/path/sample>rails new TestApp
2019年2月5日現在、上記のやり方だとエラーが出る。
原因はrails newコマンド。このコマンドはアプリケーションを作るコマンドであるが、実行されるbundle installコマンドにて、sqlite3を使用するgemのinstallが行われる。そのgemのversionが1.4.0であり、1.4.0は2019年2月4日に追加されたばかりであったためか、gem installコマンドを利用すると下記のようなエラーを吐く。
C:\path>gem install sqlite3
Fetching: sqlite3-1.4.0.gem (100%)
Temporarily enhancing PATH for MSYS/MINGW...
Installing required msys2 packages: mingw-w64-x86_64-sqlite3
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
current directory: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.4.0/ext/sqlite3
C:/Ruby24-x64/bin/ruby.exe -r ./siteconf20190205-8936-17igga1.rb extconf.rb
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for -ldl... no
checking for dlopen()... no
missing function dlopen
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
--- 以下略 ---
その為、一時的な対策としてrails newコマンドを--skip-bundleオプションをつけて実行する。そうするとbundle installを行わず各種ファイルの準備でコマンドが終了し、アプリケーションのディレクトリができる。
その中にあるGemfileを編集し、sqlite3の部分を以下のように編集する.
gem 'sqlite3'
↓
gem 'sqlite3', '1.3.13'
これによってエラーが出なくなるため、bundle installコマンドをアプリケーションのディレクトリで実行する。
5.serverの実行
Railsの導入後、アプリケーションのディレクトリでrails serverコマンドを実行する。
rubyのインストールのセクションで書いた2.5系のsqliteの問題が出るのはここ。
ブラウザでhttp://127.0.0.1:3000にアクセスし、Yay! You’re on Rails!のページが出たら終わり。
おわりに
一応、これでRuby on Railsの環境構築は終わり。あとはちゃんとしたコンテンツ作っていければなぁと思う。あと、2.5系じゃ使えない(一応解決策っぽい記事は見つけたけど、僕の技術だと解決できなかった)のでそこをなんとか解決できるようになれたらと思う。