Ruby on Rails の windows へのインストールについて ( Ruby 2.4 以降用 )
ここでは、
MSYS2
をインストールし、
RubyInstaller
または
RubyInstaller2
から 7-Zip で圧縮されたファイル ( ファイルタイプが 7z のファイル ) をダウンロードして展開する方法でインストールする説明をします。
( 以下の前置きはいらないという方はこちら )
windows 10 には ubuntu などの linux の実行環境として WSL ( Windows Subsystem for Linux )
が含まれており、そちらを使うことをお勧めします。
もし、メモリーとディスク容量に余裕があるなら、VirtualBox をインストールし、そこに ubuntu などの linux
をインストールして使うことをお勧めします。
こちらは、linux 100% なので、Rails も含めて Ruby の全てのライブラリが使えるはずです。
ただし、WSL と VirtualBox を使う場合は linux の知識が必要になります。
でも、Ruby の PaaS さん達は linux を使っているようなので、開発も linux で行うのが無難だと思います。
でも、やっぱり Windows で気軽に使いたいという方は、RubyInstaller
( または
RubyInstaller2
) を使ってインストールしてください。
この時、Devkit 付きを使ってください。
インストーラーの指示に従えば開発環境一式をインストールできます。
また、複数のバージョンをインストールした場合、ridk use コマンドで Ruby のバージョンを切り替えることができるようです。
至れり尽くせり。
しかし、Ruby のライブラリの全てが Windows 用に用意されているわけではありません。
自分でコンパイルしなくてはいけないライブラリもあります。
( 例えば、RubyInstaller2
参照 )
ただし、Rails のバージョンによっては sqlite3 の最新版 ( 1.4.1 ) に対応していないようです。
この場合は sqlite3 の 1.3.13 を使ってください。
Rails 5.2.3 以降では最新の sqlite3 に対応しています。
上記に記述したとおり windows 用の Ruby は
RubyInstaller
または、
RubyInstaller2
からダウンロードします。
そして
RubyInstaller
には、Ruby 2.4 以降と Ruby 2.3 以前のものがあるので注意してください。
Ruby 2.3 以前は gem のインストールに専用の DevKit が使われていましたが、Ruby 2.4 以降は
MSYS2
が使われるようになりました。
そのため、それぞれインストール方法が異なります。
Ruby 2.3 以前については
『
Ruby on Rails を windows にインストールする方法の例 ( Ruby 2.3 以前用 )
』
を参考にしてください。
なお、ここでは、特別な方法でインストールする手順を説明します。
すなわち、DevKit に含まれる
MSYS2
と Ruby とを別々にインストールし、バッチファイルで Ruby のバージョンを設定するようにします。
何故このようにインストールしたかというと、単なる趣味です。
こんな方法もあるというサンプルです。
ちなみに、もし、Ruby 本体だけ使いたい場合は、例えば、Ruby の文法を確認するだけとか、Ruby の標準機能
( 標準ライブラリ ) だけしか使わない場合などは、7zip ファイル ( ファイルタイプが 7z )
をダウンロードして展開し、PATH を設定するだけ
( 下記の 4, 5, 6, 7 )
で使えると思います。
MSYS2
が必要になるのは、gem、bundle コマンドでライブラリのインストール時にコンパイルされる時だけだと思います。
それでは手順を記述します。
ご注意
Ruby 3.1.0 からは MSYS2 での開発環境が MSVCRT から UCRT というものに変更された
ようです。
そのため、Ruby 3.0 以前と Ruby 3.1 以降とで異なります。
また、bundler 2.3.17 より古いバージョンを使うと、rails new xxxx で tzinfo-data が入
らずにエラーになります。
bundler 2.3.17 で変更されたみたいなので bundler 2.3.17
以降を使ってください。
gem update --system すれば bundler も最新に更新されます。
-
Node.js
をインストールします。
Rails 6 では必須で、それ以外は任意です。
Rails
では内部で JavaScript が使用されているようです。
Rails
の『Guides』の『Getting Started with Rails』の『4.1 Starting up the Web Server』の部分に
JavaScript の実行環境が無ければ execjs エラーが出ると記述されています。
ExecJS
を見ると Windows では何も入れなくても動くかもしれません。
でも、とりあえず
Node.js
を入れておけば無難だと思います。
Rails 6 では
Yarn
が必須です。
Yarn
には
Node.js
が必要なので Rails 6 を使う場合は
Node.js
をインストールしてください。
-
Rails 6 を使う場合は
Yarn
もインストールします。
Rails 7 では任意です。
Node.js
をインストール後、コマンドプロンプトから
“npm install --global yarn”
で
インストールできました。
この場合は
Yarn 1
がインストールされます。
インストーラー ( msi ) も用意されています。
この時、最新版は
Yarn 2
なのですが、Rails
では
Yarn 1
を使うので ( たぶん。もしかしたら
Yarn 2
でも動くかもしれません。
その時は
Yarn 2
を使ってください。 )
Yarn 2
のページの上部の
をクリックして
Yarn 1
に移動してこちらをインストールしてください。
ちなみに、『INSTALL YARN』をクリックして Alternatives の
『Click to expand / collapse』をクリックし、
Windows の Classic Stable (1.22.19)
を選択して『Download Installer』をクリックしてインストーラをダウンロードし、それを実行すれば良いはずです。
-
MSYS2
をインストールします。
MSYS2 のページ
で 『 msys2-x86_64-xxxxxxxx.exe 』 をクリックしてインストーラをダウンロードし実行します。
全てデフォルトでインストールするのが無難なようです。
その場合は
c:\msys64 フォルダに
インストールされるはずです。
インストールの最後に
MSYS2
のターミナルが開きますが、ここでは何もせずに exit してください。
なお、DevKit 付きの Rubyinstaller でインストールする場合は、Ruby のインストール終了後に自動的に
MSYS2
のインストーラが実行されるようです。
- Ruby を入れるフォルダを作ります。
任意の場所に Ruby を入れるフォルダを作ります。
フォルダ名には空白を含めないようにしてください。
例えば、C:\trial\ruby などとします。
ruby フォルダの下に bin フォルダと
workspace フォルダを作ります。
bin フォルダには Ruby 本体を入れます。
workspace フォルダで Rails アプリを作ったりします。
- windows 用の 64bit 版 Ruby をダウンロードします。
例えば、RubyInstaller
の場合は、『 ダウンロード 』 ボタンをクリックし 『 Other Useful Downloads 』 の 『 7-ZIP ARCHIVES 』 から 2.4 以降で
『 (x64) 』 が付いたものをダウンロードしてください。
- ダウンロードしたファイルを解凍します。
・・・\ruby\bin フォルダの下にダウンロードした
Ruby のバージョンに合わせて
ruby-xx.yy.zz-x64 フォルダを作って、そこに、
7-ZIP
を使って解凍します。
- Ruby への PATH を設定します。
windows のコマンドプロンプトで表示されるフォルダにバッチファイルを作成します。
例えば、ruby-xx.yy.zz-x64.bat とします。
そのバッチファイルに下記のように記述します。
ただし、Ruby 3.1.0 から開発環境が MSVCRT から UCRT
に変更されているので、4 行目が異なります。
Ruby 3.0 以前の場合は
ruby-xx.yy.zz-x64.bat
1
2
3
4
5
|
set RUBYOPT=-EUTF-8
PATH = C:\trial\ruby\bin\ruby-xx.yy.zz-x64\bin;%PATH%
set MSYS2_PATH_TYPE=inherit
call C:\msys64\msys2_shell.cmd -mingw64 -where "C:\trial\ruby\workspace"
cd C:\trial\ruby\workspace
|
Ruby 3.1 以降の場合は
ruby-xx.yy.zz-x64.bat
1
2
3
4
5
|
set RUBYOPT=-EUTF-8
PATH = C:\trial\ruby\bin\ruby-xx.yy.zz-x64\bin;%PATH%
set MSYS2_PATH_TYPE=inherit
call C:\msys64\msys2_shell.cmd -ucrt64 -where "C:\trial\ruby\workspace"
cd C:\trial\ruby\workspace
|
- 1 行目
-
Rails のみ使用する場合は必要ないと思うのですが、文字コードが
UTF-8
で記述されたスクリプトファイルを Ruby で直接実行する場合に必要です。
- 2 行目
-
Ruby への PATH を設定します。
- 3 行目と 4 行目
-
任意です。
MSYS2
付属のターミナルを使用する場合に必要です。
windows のコマンドプロンプトから ridk exec を付けてコマンドを実行すれば
MSYS2
のターミナルは不要です。
例えば、ridk exec pacman xxx や ridk exec rails new xxxx など。
- 3 行目
-
windows の PATH を
MSYS2
のターミナルでも有効になるよう設定します。
- 4 行目
-
MSYS2
の MinGW 64-bit 用のターミナルを開きます。
MSYS2
のインストールで作成されたスタートメニューの
MSYS2 MinGW 64-bit
を参考にしました。
Ruby 3.0 以前をインストールする場合は mingw64 用、Ruby 3.1 以降をインストールする場合は
ucrt64 用のターミナルを開くようにします。
-where
オプションでターミナルが開いた後のカレントフォルダを workspace に設定します。
先頭に call を付けないと 5 行目が実行されないので注意してください。
- 5 行目
-
カレントフォルダを workspace に移動します。
これで、コマンドプロンプトを開いた後、ruby-xx.yy.zz-x64.bat
を実行することで Ruby が使用できるようになります。
windows のコマンドプロンプトと
MSYS2
のターミナルの 2 つが開きますが、gem ライブラリのインストール
( rails new ・・・, bundle install, bundle update, gem install ・・・ 等 ) の時だけ
MSYS2
のターミナルを使い、それ以外はコマンドプロンプトを使うのが良いと思います。
なお、windows のコマンドプロンプトからでも ridk exec の後にコマンドを記述すると
MSYS2
の環境でコマンドが実行されるので、gem や bundle コマンドも使えます。
たとえば、『 ridk exec bundle update 』 など。
しかし、ちょっと困ったことがあります。
MSYS2
のターミナルから rails server コマンドを実行すると Ruby のプロセスが 2 つ起動されるのですが、Ctrl-C で rails server
を終了すると Ruby のプロセスが 1 つ残ってしまい、続けて rails server するとエラーが発生します。
この場合、残った Ruby のプロセスを windows 側 ( タスクマネージャーや taskkill コマンド等 )
から終了するしか方法が無いようです。
原因は不明です。
私の PC だけの現象かもしれません。
Ruby をインストーラでインストールしなかったためかもしれません。
なお、windows のコマンドプロンプトから rails server した場合は、Ctrl-C で
rails server を終了すると、Ruby のプロセスが 2 つとも終了します。
なので、rails server も windows のコマンドプロンプトから実行するのが無難なようです。
もう一つ。
windows のコマンドプロンプトと
MSYS2
のターミナルとではホームフォルダが異なり、
MSYS2
では c:\msys64\home\ユーザ名
がホームフォルダになります。
そのため、コマンドプロンプトで使用していたコマンドの設定が
MSYS2
に引き継がれません。再度、
MSYS2
にてコマンドの設定をするか、コマンドプロンプトのホームにある設定ファイル
( 例えば git for windows の場合は .gitconfig ファイル ) を
MSYS2
のホームにコピーしてください。
-
MSYS2
に開発用のコマンド類をインストールします。
MSYS2
のターミナルで下記の 2 行を実行してください。
全てデフォルトでかまいません。
ただし、Ruby 3.1.0 から開発環境が MSVCRT から UCRT
に変更されているので、インストールするものが異なります。
Ruby 3.0 以前の場合は
$ pacman -Sy pacman
$ pacman -S base-devel mingw-w64-x86_64-toolchain
Ruby 3.1 以降の場合は
$ pacman -Sy pacman
$ pacman -S base-devel mingw-w64-ucrt-x86_64-toolchain
- SQLite3 を入れなくても Rails が動くようです。
お手数をかけて申し訳ありませんでした。
一応残しておきます。
-
SQLite3 をダウンロードします。
SQLite Home Page
で、『 Download 』 ボタンをクリックし、64 bit 版の Ruby に合わせて
『 Precompiled Binaries for Windows 』 の 『 sqlite-dll-win64-x64-3280000.zip 』 ( 2019 年 4 月現在 )
をダウンロードします。
- sqlite3.dll を Ruby の bin
フォルダにコピーします。
ダウンロードしたファイルは zip ファイルなので、エクスプローラーで中に入っている
sqlite3.dll
ファイルを
・・・\ruby\bin\ruby-xx.yy.zz-x64\bin
にコピーします。
- gem 本体を最新の状態にします。
- Rails をインストールします。
ここでエラーになった場合は、諦めて、日を改めて、再度、Rails をインストールしてみてください。
ここでエラーになるのは、エラーになった gem ライブラリが今回インストールしたバージョンの windows 版 Ruby
に対応していないことが原因だと思います。
何らかの対応策があると思いますが、わかりません。
バージョンを下げてインストールしなおすか、そのバージョンに対応されるまで待つのが良いと思います。
例えば、Rails で使われる
nokogiri
も、Ruby 2.6.0 が 2018 年 12 月 25 日にリリースされ、
nokogiri
は 2019 年 1 月 4 日に windows 版 Ruby 2.6
に対応したものがリリースされています。
以上で Rails が windows に入ったはずです。
でも、rails sever すると
・・・cannot load・・・(LoadError)・・・
のようなエラーメッセージが出た時は、十中八九、windows 版 Ruby 用のファイルが無い場合です。
このような場合でも日を改めて該当する gem ライブラリを再インストールすればエラーが出なくなることがあります。
sqlite3
がそうでした。
でも、対応されない場合もあるようです。
bcrypt
がそのようで、Ruby 2.6
以降は提供されていないようです。
この場合は次の手順で小細工をします。
でも、Ruby 2.6.3、Rails 5.0.7.2 では、最新の
bcrypt
3.1.13 がインストールできました。
mingw32 版が無くてもインストールできました。
bcrypt
については小細工が不要かもしれません。
-
Ruby のバージョンに対応したフォルダがあることを確認します。
例えば、
- C:\trial\ruby\
- bin\
- ruby-xx.yy.zz-x64\
- lib\
- ruby\
- gems\
- xx.yy.0\
- gems\
- gemライブラリ名-バージョン-x64-mingw32\
という感じ。
なお、最後の
lib\
の下にもう一段
gem ライブラリ名
というフォルダがある場合もあります。
という感じ。
フォルダがこのような構成になっていない場合は、ネットで調べてください。
なお、2.3
のフォルダ等いくつか無い場合もありますが、何らかの Ruby のバージョンに対応した
フォルダがあれば良いはずです。
以降は、フォルダがこのような構成になっていることを前提に記述します。
-
gem ライブラリの Ruby のバージョンに対応したフォルダがある所に
xx.yy フォルダを作成します。
・
・
・
- lib\
- gem ライブラリ名\ )
- 2.0\
- 2.1\
- 2.2\
- 2.3\
- xx.yy\
という感じ。
-
gem ライブラリをコンパイルします。
$ gem install <gem ライブラリ名> --platform=ruby
なお、
sqlite3
については、
RubyInstaller2
にコンパイル方法が記述されており、
$ pacman -S mingw-w64-x86_64-sqlite3
$ gem install sqlite3 --platform ruby
とした方が良いみたいです。
windows のコマンドプロンプトから実行する場合は
$ ridk exec pacman -S mingw-w64-x86_64-sqlite3
$ gem install sqlite3 --platform ruby
だそうです。
RubyInstaller2
には、
nokogiri
についても記述がありますが、
nokogiri
の gem には対応する
Ruby のバージョンが指定されているようなので、急がない場合は、対応されるまで待った方が良いと思います。
ここでエラーになったら、ネットで調べてください。
-
コンパイルで作成されたファイルを
xx.yy フォルダにコピーします。
- C:\trial\ruby\
- bin\
- ruby-xx.yy.zz-x64\
- lib\
- ruby\
- gems\
- xx.yy.0\
- gems\
- gem ライブラリ名-バージョン\
- gem ライブラリ名-バージョン-x64-mingw32\
という感じ。
以上です。
今後、新しいバージョンの Ruby を入れる場合も、上記と同様の方法で、
RubyInstaller
または
RubyInstaller2
から
7-ZIP
で圧縮されたファイルをダウンロードし、
C:\trial\ruby\bin
フォルダに新しいフォルダを作って解凍します。
そして、バッチファイルも新しいものを作り、新しい Ruby への PATH を設定すれば良いと思います。
この場合、コマンドプロンプトを開いた後、バッチファイルを選択することで Ruby の環境を切り替えられます。
Ruby の環境を切り替えたい時はコマンドプロンプトを開き直すという手間がいるのが邪魔くさいですが。