WindowsにRubyOnRailsをインストールする方法

WindowsにRubyOnRainsをインストールする手順です。

WindowsにRubyOnRailsをインストールする方法

今後 Ruby と Rails を使った案件が発生しそうだったので、久しぶりに環境構築しました。RonRなんてもう何年振り?!・・・記憶では・・8年・・世界が違うのですね・・・orz

まず最初にお伝えしないといけないのは、SSL関連のエラーが出たので「https://rubygems.org/」でのアクセスはしていません。この辺りに問題がある方は、別の記事を参照ください。

これから WindowsでRubyOnRailsの環境構築 をされる方のお役に立てればうれしいです。


Rubyをインストールする

まずは Ruby のインストーラーを下記のサイトからダウンロードしましょう。

RubyInstaller for Windows

今回は Ruby 2.3.0 をダウンロードします。

Ruby2.3.0をダウンロード

ダウンロードしたファイルを実行し、インストーラを起動します。

下図の画面まできたら、「Ruby の実行ファイルへ環境変数 PATH を設定する」にチェックを入れます。インストール先は「C:/Ruby23」とします。

Ruby2.3.0をインストール

インストールが完了したらコマンドプロンプトを起動して以下をコマンドを実行して Ruby のバージョンをチェックします。

rubyコマンドが使えない場合はPCを再起動しましょう。

>ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [i386-mingw32]

DevKitをダウンロードする

次に DevKit をダウンロードしましょう。

上記と同じページの下の方に「DEVELOPMENT KIT」というものがあります。ここでは DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe をダウンロードします。

Ruby DevKitをダウンロード

ダウンロードしたファイルを実行すると、下図のように解凍先のパスを指定する画面が出ます。ここでは「C:/Ruby23/devkit」としました。

Ruby DevKitを解凍

解凍が終わったらコマンドプロンプトから下記のコマンドを実行します。

>ruby C:/Ruby23/devkit/dk.rb init
>ruby C:/Ruby23/devkit/dk.rb install

RubyGemsのアップデート

RubyGems とは、Ruby 言語用のパッケージ管理システムであり、Ruby のプログラムと "gem" と呼ばれるライブラリの配布用標準フォーマットを提供しているものです。正直、ここからハマりました^^;

まず、下記のコマンドを実行してください。

>gem update --system

なんのエラーも出ず、アップデートが完了した方は次のステップ「Bundlerのインストール」に進んでください。

下記のエラーが出た方は、プロキシ環境下の可能性があります。

ERROR:  While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
    no such name (https://rubygems.org/specs.4.8.gz)

環境変数を設定することで回避できますので、下記のコマンドを実行しましょう。

>setx http_proxy http://proxy.exsample.com:8080 -m

exsample.com部分とポート番号(:8080)部分は、環境に合わせて変更してください。

もう一度実行して、下記のエラーが出た場合は要注意です。

Error fetching https://rubygems.org/:
        SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.org/specs.4.8.gz)

冒頭にも書きましたが、解決できていません。何をどう試したかは後述します。SSL 証明書を見つけることができないエラーのようです。HTTPS 接続に失敗しているのが原因っぽいので、HTTP 接続に変えちゃいます。なんのエラーも出てない方は、次のステップ「Bundlerのインストール」に進んでください。

現在の RubyGems のバージョンを確認しておきます。

>gem -v
2.5.1

下記のコマンドを実行します。

>gem source --list
*** CURRENT SOURCES ***

https://rubygems.org/

この https 部分を http に変更します。「souce -a」オプションで http の URL を指定します。

>gem source -a http://rubygems.org/
https://rubygems.org is recommended for security over http://rubygems.org/

セキュリティ上 https を推奨するとメッセージが出ます。ここはyとます。

Do you want to add this insecure source? [yn]  y
http://rubygems.org/ added to sources

「souce -r」オプションで https の URL を削除します。

>gem source -r https://rubygems.org/
https://rubygems.org/ removed from sources

ちなみにこの設定は .gemrc に記述されています。場所は下記になります。

Windows7以降:C:/Users/ユーザー名.gemrc

改めて RubyGems のアップデートをおこないます。

>gem update --system

アップデートが終わったら、バージョンを確認します。

>gem -v
2.6.6

Bundlerのインストール

Bundler とは、Ruby のライブラリ管理ツールの事です。ライブラリのバージョン違いで動作しない問題を解決できます。特にチーム開発の際、何をインストールしたか意識しなくてよいので便利です。

下記のコマンドを実行します。

>gem install bundler

インストールが終わったら、バージョンを確認します。

>bundler -v
Bundler version 1.12.5

Railsのインストール

さて、いよいよ Rails をインストールします。

下記のコマンドを実行します。

>gem install rails --no-ri --no-rdoc

インストールが終わったら、バージョンを確認します。

>rails -v
Rails 5.0.0

ちなみにオプション「--version」を指定することで特定のバージョンをインストールすることもできます。

>gem install rails --version="~> 4.2.3" --no-ri --no-rdoc

Node.jsのインストール

Node.js はイベント化された入出力を扱う Unix 系プラットフォーム上のサーバーサイド JavaScript 環境のことです。これをを入れないと、scaffold で作ったアプリケーションで Type Error が発生するようです。

下記のサイトからダウンロードしてください。

Download Node.js

ここでは「node-v6.2.2-x86.msi」をダウンロードしました。ダウンロードファイルを実行してインストールしましょう。全て「Next」で進んで構いません。

Ruby Node.jsのインストール

インストールが終わったら、下記のコマンドを実行してバージョンを確認します。

>node -v
v6.2.2

SQLiteのインストール

さて、ここからは少し手間がかかります。通常であれば「gem install sqlite3」のコマンド実行でよいと思うのですが、Ruby 2.3.0の場合、このコマンドでインストールすると、「scaffold」実行時に下記のエラーが出ます。

>gem install sqlite3
C:/Ruby23/lib/ruby/gems/2.3.0/gems/sqlite3-1.3.11-x86-mingw32/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)

このエラーの原因はエラーの場所に行ってみればわかります。

SQLiteのインストールエラーの原因

このように「2.3」というディレクトリがなく、「sqlite3_native.so」が見つからないというエラーでした。そこで Ruby 2.3.0 用の sqlite3_native ファイルを作る必要があります。

下記の SQLite ダウンロードページへアクセスします。

SQLite Download Page

Source Code の「sqlite-autoconf-3130000.tar.gz」をダウンロードします。

Ruby sqlite-autoconf-3130000.tar.gzダウンロード

Precompiled Binaries for Windows の「sqlite-dll-win32-x86-3130000.zip」もダウンロードします。

Ruby sqlite-dll-win32-x86-3130000.zipダウンロード

まず「sqlite-autoconf-3130000.tar.gz」を解凍して適当な場所に配置します。

ここでは「C:/sqlite-autoconf-3130000」とします。

Ruby sqlite-autoconf-3130000.tar.gzを解凍

次に「sqlite-dll-win32-x86-3130000.zip」を解凍して、Ruby の実行ファイルがある場所にコピーします。ここでは「C:/Ruby23/bin」となります。

Ruby sqlite-dll-win32-x86-3130000.zipを解凍してコピー

下記のコマンドを実行します。

>gem install sqlite3 -v "=1.3.11" --platform=ruby -- --with-sqlite3-include=C:/sqlite-autoconf-3130000 --with-sqlite3-lib=C:/Ruby23/bin

-v "=1.3.11" :

インストールするバージョンを指定しています。 バージョンを指定していないと最新版がインストールされるようです。

--platform=ruby :

環境にあった gem が使用されます。 デフォルトだと x86-mingw32 版になるので、明示的に指定しています。

オプションパス
--with-sqlite3-include解凍したソースファイルの場所C:/sqlite-autoconf-3130000
--with-sqlite3-libsqlite3.dll をコピー場所(ruby.exe のある場所)C:/Ruby23/bin

ビルドしているのは、 sqlite3.dll ではなく、 それを ruby から使うための Native 拡張ライブラリー sqlite3_native.so です。ソースファイルは "sqlite3.h" を使用しています。

この辺りは「プログラマーズ雑記帳」さんが詳しく書かれていますので、参考にしてみてください。

Windows 版 Ruby 2.0.0 で sqlite3 を使えるようにする プログラマーズ雑記帳

下記の場所に行ってみると、「sqlite3_native.so」が出来ていると思います。

C:/Ruby23/lib/ruby/gems2.3.0/gems/sqlite3-1.3.11/lib/sqlite3

Ruby sqlite3_native.so確認

不要な SQLite がインストールされている場合は、削除しましょう。

>gem uninstall sqlite3

動作確認用アプリを作成する

さて、環境も整ったので動作確認用アプリを作って検証しましょう。ここでは「C:/samples/rails」配下に Rails アプリを作ります。ご自身の環境に合わせて変更ください。

下記のコマンドを実行して作業ディレクトリを作ります。

>mkdir C:/samples/rails
>cd C:/samples/rails
>rails new hoge --skip-bundle

「rails new hoge」実行時に --skip-bundle オプションを付けると,アプリケーションソースコードの生成後に bundle install コマンドを実行しません。ここでオプションを付けたのは、SSL証明書エラーを回避するためです。SSL関連のエラーが出ていない場合は、こちらの操作は不要です。bundle install コマンドを実行してください。

下記のコマンドを実行します。

>cd hoge
>vim Gemfile

https を http に変更します。

source 'https://rubygems.org'

source 'http://rubygems.org'

vi コマンドが扱えない方は、Gemfile を直接修正しても問題ありません。保存したら下記のコマンドを実行して、依存パッケージのインストールをおこないます。

>bundle install

結構時間がかかるので、気長に待ちましょう。

下記のコマンドを実行して、検証用アプリを作ります。

>rails g scaffold user name:string email:string
>rake db:migrate

下記のコマンドを実行して、アプリケーションを起動します。

>rails s

動作確認

ブラウザで http://localhost:3000/ を開いてみます。下図のような画面が出れば、Rails は正常に起動しています。

RubyOnRails 動作確認 その1

次に http://localhost:3000/users/ を開いてみます。

下図の画面から New User のリンクをクリックします。

RubyOnRails 動作確認 その2

Name と Email に何か入力して「Create User」ボタンを押下します。

RubyOnRails 動作確認 その3

「User was successfully created.」のメッセージが出れば動作検証はおしまいです。

RubyOnRails 動作確認完了

参考サイト

SSL関連のエラーのまとめ

さて、冒頭で記載していた「SSL関連のエラー」が発生している問題。解決できていませんが、何をやったか掲載しておこうと思います。

まず、今回環境を作った Windows のネットワーク環境は、プロキシ配下にあります。冒頭の「RubyGemsのアップデート」で書いた通り、システム環境変数に http_proxy を追加しています。

RubyGems のバージョンは「2.5.1」と「2.6.6」で試しています。

ネット上の色々なサイトから得られた情報としては、下記のメッセージは RubyGems が SSL 証明書を見つけることができないエラーであるということがわかりました。

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.org/specs.4.8.gz)

「AddTrustExternalCARoot-2048.pem」を入れれば解決ということなので、じゃあ RubyGems の SSL 証明書ってどうなっているのよと思い、下記のコマンドをたたいて証明書の場所まで移動。

>gem which rubygems
C:/Ruby23/lib/ruby/site_ruby/2.3.0/rubygems.rb

>start C:/Ruby23/lib/ruby/site_ruby/2.3.0/rubygems

すると、こんな感じになっていました。

Ruby SSL 証明書場所

はい、「AddTrustExternalCARoot-2048.pem」ありました・・・。

証明書の場所を確認するコマンドをたていてみると、こんな感じに。

>ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
C:/Users/Justin/Projects/knap-build/var/knapsack/software/x86-windows/openssl/1.0.1l/ssl/cert.pem

場所が違うのかと思って、乱暴ながら上記のディレクトリを作ってみます。こちらのページを参考に、「cacert.pem」をダウンロードし、「cert.pem」を配置してみました。

Rubyのopensslの証明書が見つからない時ってどうすればいいの? - Qiita

実行したコマンドは下記のとおりです。

>cd C:/Users/Justin/Projects/knap-build/var/knapsack/software/x86-windows/openssl/1.0.1l/ssl
>curl -O http://curl.haxx.se/ca/cacert.pem
>cp cacert.pem cert.pem

こんな感じになりました。

Ruby cacert.pemをダウンロードしcert.pemを配置

「gem update --system」してみるも、結果は変わらず・・・・。

こちらのページに環境変数の設定で対応できると書いてありました。

Windows上のRubyでSSL接続時にcertificate verify failedが出る場合の対処 - Qiita

環境変数に SSL_CERT_FILE を設定してみます。

>setx SSL_CERT_FILE C:/Ruby23/lib/ruby/2.3.0/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem

「gem update --system」してみるも、結果は変わらず・・・・。

と、ここまでやったところでお手上げ・・・と判断。HTTPS 接続を諦め、HTTP 接続で環境構築することにしました。

現在も解決策はわかっていません。

どなたかヒントがあればコメントいただけると助かります。

まとめ

いやー、友人たちからは「Linux ベースの Ruby は Windows じゃ環境作るの超大変だぜぃ」って聞いてたのですが、実際やってみるとホント大変・・・。正直、SSL関連の解決のために、丸1日使ってしまいました・・・。・・・なのに解決できず・・・。

8年前はどうしてたんだっけなぁ・・・。まったく思い出せない・・・。

とりあえず Ruby と Rails の習得が目的なので、環境構築はここまでにしておきます。今度は Windows10 でやってみようかなぁ・・・。bash も使えるって話だし。ただ Windows で Ruby はツライって聞くし、将来的には Vagrant とか検討しようと思ってます。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。