0
0

More than 3 years have passed since last update.

Windows10でのRailsの導入がうまくいかず、WSLを用いた話

Last updated at Posted at 2020-04-09

はじめに

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/ をブラウザで開くと、以下のエラーページが表示されました。
sqlite3-error.PNG

そこで、Gemfile中の

gem 'sqlite3'

の部分を

gem 'sqlite3', '1.3.13'

に書き換え、bundle installを実行した後に再度試したところ、以下のエラーページに変わりました。
wrong-number.PNG

これを解決しようとしたのですが、 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

すると先ほどと同じエラーページ
sqlite3-error.PNG
が表示されるので、同様にGemfile中の

gem 'sqlite3'

の部分を

gem 'sqlite3', '1.3.13'

に書き換え、bundle installを実行した後に再度試したところ、無事に以下のページが表示されました!
rails-server.PNG

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0