#はじめに
Windows10でRailsの環境構築をしたところ、rails server
コマンドを実行したときにページをうまく表示できなかったので、WSLを用いることにしたときの備忘録です。
#環境
- Windows10(64bit)
- Surface Pro 4
- Ruby 2.6.5
#Windows10での環境構築(失敗)
結局解決せずに諦めたので、興味がない方は読み飛ばしてください。
まず gem 経由で Rails をインストールします。
$ gem install rails -v 5.0.7.2
Rails プロジェクト用のディレクトリを作成し、そのディレクトリに移動してプロジェクトnew-app
を作成します。
$ mkdir workspace
$ cd workspace
$ rails new new-app
new-app
ディレクトリに移動してrails server
を実行したところ、次のエラーが発生しました。
cannot load such file -- sqlite3/sqlite3_native (LoadError)
そこで、色々調べた結果、以下の方法を実行しました。
##1. sqlite3.dllとsqlite3.exeをPathがとおったディレクトリに配置
SQLite Download Page
の「Precompiled Binaries for Windows」欄にある「sqlite-dll-win64-x64-3310100.zip」をダウンロード・解凍し、入っている「sqlite3.dll」をC:\Ruby26-x64\bin
に配置します。
また、同じ欄にある「sqlite-tools-win32-x86-3310100.zip」をダウンロード・解凍し、入っている「sqlite3.exe」をC:\Ruby26-x64\bin
に配置します(圧縮ファイル名の数字が変わっているときもあるので、適時読み替えてください)。
##2. sqlite3_native.soファイルを生成して配置
同様にSQLite Download Pageの「Source Code」欄にある「sqlite-amalgamation-3310100.zip」をダウンロード・解凍してC:
下に配置し、以下のコマンドを実行してsqlite3_native.so
ファイルを生成します(ファイル名の数字やRubyのバージョンは適宜読み替えてください)。
gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:/sqlite-amalgamation-3310100 --with-sqlite3-lib=C:\Ruby26-x64\bin
これでC:\Ruby26-x64\lib\ruby\gems\2.6.0\gems\sqlite3-1.3.14\lib\sqlite3\sqlite3_native.so
にファイルが生成されます。
次に、C:\Ruby26-x64\lib\ruby\gems\2.6.0\gems\sqlite3-1.3.13-x64-mingw32\lib\sqlite3
に新しくディレクトリ2.6
を作成します。このディレクトリの名前はRubyのバージョンに対応させてください。そしてこの中に先ほど生成したsqlite3_native.so
をコピーします。
上記の作業の後にもう一度rails server
コマンドを実行します。すると今度は以下のように表示され、ローカルサーバーが立ち上がりました。
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGHUP not implemented, signal based logs reopening unavailable!
Puma starting in single mode...
* Version 3.12.4 (ruby 2.6.5-p114), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
ところが、http://localhost:3000/ をブラウザで開くと、以下のエラーページが表示されました。
そこで、Gemfile中の
gem 'sqlite3'
の部分を
gem 'sqlite3', '1.3.13'
に書き換え、bundle install
を実行した後に再度試したところ、以下のエラーページに変わりました。
これを解決しようとしたのですが、 Windows10 で結局 Rails の環境構築に失敗したという記事が多数あり、解決できない可能性が高いと思ったのでWSL( Windows Subsystem for Linux ) を用いてみることにしました。
#WSLを用いたRailsの環境構築
##WSLの導入
まずWSLをインストールします。
Windowsの検索ボックスから「Windowsの機能の有効化または無効化」のウィンドウを出し、「Windows Subsystem for Linux」のチェックボックスにチェックを入れます。インストールが始まるので、それが終わったら再起動します。再起動後、Microsoft StoreでUbuntuを検索し、「入手」ボタンを押してインストールします。その後「起動」ボタンを押すと、そこそこ時間がかかったあとにユーザー名とパスワードの設定を求められます。これでWSLの導入が終わりました。次にいよいよ Rails の環境構築を行います。
##Railsの環境構築
###1. Rubyのインストール
Rubyのインストールに必要な各種ライブラリを入れておきます。
$ sudo apt-get update
$ sudo apt-get install make
$ sudo apt-get install gcc
$ sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
Rubyのバージョン管理を楽にしてくれる rbenv を導入してPATHをとおし、初期設定を行います。
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ ~/.rbenv/bin/rbenv init
# Load rbenv automatically by appending
# the following to ~/.bashrc:
eval "$(rbenv init -)"
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
Node.jsも導入しておきます。ここでもバージョン管理用ツールである n を導入します。
$ sudo apt-get install npm
$ sudo npm install -g n
$ sudo n stable
Ruby を導入します。
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv install 2.6.5
$ rbenv rehash
$ rbenv global 2.6.5
Rails を導入します。
$ gem install rails -v 5.0.3
Railsを用いるのに必要なSQlite3とbundlerを導入します。
$ sudo apt-get install libsqlite3-dev
$ gem install sqlite3 -v 1.3.13
$ gem install bundler
以上で準備が整いました。ここからは、失敗したときと同じようにプロジェクトを作成し、サーバーを立てることを試みます。
$ mkdir workspace
$ cd workspace
$ rails new new-app
$ cd new-app
$ bundle install
$ rails server
すると先ほどと同じエラーページ
が表示されるので、同様にGemfile中の
gem 'sqlite3'
の部分を
gem 'sqlite3', '1.3.13'