はじめに
本記事の趣旨はタイトルの通り。
WSL( Windows Subsystem for Linux ) 環境で Rails 環境を構築したときのメモ。
本記事を実施した環境
ツール | バージョン | 確認方法 |
---|---|---|
Windows 10 Home 64bit | ||
Windows Subsystem for Linux | ||
Ubuntu | 18.04.2 LTS (Bionic Beaver) | $ cat /etc/os-release |
rbenv | 1.1.2-2 | $ rbenv -v |
Ruby | 2.6.1p33 | $ ruby -v |
Rails | 5.2.3 | $ rails -v |
gem | 3.0.1 | $ gem -v |
Bundler | 2.0.1 | $ bundler -v |
n | 4.1.0 | $ n --version |
Node.js | 10.15.3 | $ node -v |
npm | 6.4.1 | $ npm -v |
WSL( Windows Subsystem for Linux ) を入れよう
WIndows 10 の Professional でも Home でも WSL は入れられる。
WSL の導入は次の記事に従って作業すればスムーズに行えた。
-
WSL(Windows Subsystem for Linux)を使ってみた
( 画像ありの分かりやすい記事、ありがとうございました )
WSL を入れたら
1. 環境を最新にしよう
Ubuntu のターミナルから次のコマンドを実行して環境を更新する。
sudo
はスーパーユーザでの実行権限を付与するコマンド。apt-get
は管理者権限での実行が必要なので、sudo
をつけて実行する。
$ sudo apt-get update
$ sudo apt-get upgrade
Rails 環境を構築しよう
注意
実行環境で Kaspersky が起動していると、以降の作業で通信を行う際にエラーとなって各種ツールのインストールやRailsプロジェクトの作成に失敗する。
ここでは Kaspersky を停止して作業を継続した。
1. 各種ライブラリを入れよう
rbenv を入れた あとに rbenv 経由で Ruby を入れるのだが、その際に ruby-build という rbenv のプラグインを入れる 必要がある。
で、その ruby-build のインストールにあたって色々と必要なライブラリがある。
ここでは実際に Ruby を入れる際に発生する余計なエラーを回避すべく、それらを事前に入れておく。
$ sudo apt-get install make
$ sudo apt-get install gcc
$ sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
2. Node.js を入れよう
こちらも同じく事前にエラーを回避するための手順。
Rails を実行する際に JavaScript のエンジンが必要になるのだが、 Node.js を入れておくことでこれに対応できる。
(注)
これはあくまで WSL 上の Ubuntu における環境構築手順なので、Windows 上ですでに Node.js を入れていてもこの手順は実施する必要がある。
インストールは次のコマンドを実行する。
$ sudo apt-get install npm
これで Node.js そのものはインストールされたのだが n
というツールを入れることで Node.js のバージョン管理を行うことができる。
n
のインストールは次のコマンドを実行する。
$ sudo npm install -g n
$ sudo n stable
(注)
手前味噌で恐縮だが、n
による Node.js のバージョン管理については 別記事 で記載しているので、ご興味あればそちらも参照されたい。
そちらの記事では LinuxMint 18 が確認環境だが、同じ Debian ベースのデストリビューションなので違和感なく進められると思う。
3. rbenv を入れよう
どうせやるなら rbenv で Ruby のバージョンを管理したい。
ということで、 rbenv を GitHub から git clone
で取ってくる。
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
rbenv がインストールできたら次のコマンドを実行して rbenv の PATH を通す。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
そして次のコマンドを実行して rbenv の設定を行う。
$ ~/.rbenv/bin/rbenv init
と打つと
# Load rbenv automatically by appending
# the following to ~/.bashrc:
eval "$(rbenv init -)"
とでるので、eval "$(rbenv init -)"
を .bashrc
に追記する。
まとめると、.bashrc
には次の2行が追記されることになる。
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
最後にターミナルを再起動して環境変数の反映させる。
( $ source ~/.bashrc
か、もしくは $ exec $SHELL -l
でも反映できる )
- 参考
4. ruby-build を入れよう
rbenv をインストールしたら次は Ruby を入れるためのプラグイン、 ruby-build を入れる。
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
ここで 先の手順 でインストールしたライブラリが効いてくる。
これらのライブラリを入れていない場合は、逐次エラーが発生してその都度ライブラリをインストールしなければならず、非常に鬱陶しい。
5. Ruby を入れよう
ようやく Ruby のインストールである。
Ruby のバージョンは任意のもので良い。ここでは 2.6.1
を入れてみる。
次のコマンドを実行して Ruby のバージョン 2.6.1 をインストールする。
$ rbenv install 2.6.1
$ rbenv rehash
$ rbenv global 2.6.1
で、Ruby のバージョンは。。。
$ ruby -v
ruby 2.6.1p33
と、指定したバージョン( 2.6.1
) がインストールされていることが確認できた。
6. Rails を入れよう
Ruby のインストールまで終わったら、次は Rails を入れるための作業にはいる。
Rails は gem 経由でインストールする。バージョンは指定しない。
$ gem install rails
Fetching railties-5.2.3.gem
/home/hogehoge/.rbenv/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:6: warning: Insecure world writable dir /home/hogehoge/.rbenv/versions in PATH, mode 040777
Successfully installed railties-5.2.3
Successfully installed rails-5.2.3
Parsing documentation for railties-5.2.3
Installing ri documentation for railties-5.2.3
Parsing documentation for rails-5.2.3
Installing ri documentation for rails-5.2.3
Done installing documentation for railties, rails after 0 seconds
2 gems installed
ということで、2019年05月現在、5.2.3
のバージョンがインストールされた。
既存の Rails プロジェクトにあわせたバージョンを指定したい場合は次のように指定してやれば良い。
( ここでは 5.2.0
を指定した )
$ gem install rails -v 5.2.0
7. sqlite を入れよう
Rails を使うにあたり SQLite3 のインストールが必要になる。SQLite そのものは gem 経由でインストールするのだが、ここでも依存ライブラリを先に入れておかなければならない。
まずは依存ライブラリのインストールから。
$ sudo apt-get install libsqlite3-dev
次に SQLite3
のインストール。
$ gem install sqlite3 -v 1.3.13
8. bundler を入れよう
Rails では一旦プロジェクトを作ると、そのプロジェクトで扱っているライブラリは Gemfile で管理され、それらは bundler でインストールすることになる。
ということで、 bundler をインストールしておく。
$ gem install bundler
Rails プロジェクトを作ろう
1. Rails プロジェクトを作ろう
ここまでで Ruby のインストールと Rails のインストール、およびそれらを使う際に必要な最低限のライブラリのインストールが完了した。
実際に Rails プロジェクトを作って起動してみる。
プロジェクトの作成は次のコマンドで行う。
$ rails new sample-app
2. Rails プロジェクトを起動しよう
これで雛形ができたので、プロジェクト直下に移動してアプリケーションを起動する。
$ cd sample-app/
$ rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.1-p33), 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 にアクセスして、次のページが見れれば環境構築は完了。
Rails プロジェクトを Windows 側に配置して Ubuntu からシンボリックリンクを貼って参照しよう
上記までで Ubuntu on WSL の環境に Rails を導入できたが、このままだと Windows 環境から Rails プロジェクトの編集ができない。
だが発想の逆転で、Windows 環境にあるプロジェクトに対して Ubuntu on WSL からシンボリックリンクを貼れば以下が実現できる。
- Rails プロジェクトを Windows から編集できる
- Rails アプリの起動は Ubuntu on WSL から行える
ちなみに Ubuntu on WSL から Windows のフォルダは /mnt/c/
から参照できる。
なので、Windows 側のフォルダに作成した Rails のプロジェクトを Ubuntu 側から参照しに行っても良いのだが、毎回 /mnt/c
から参照しにくのは流石に面倒臭い。
ということで、シンボリックリンクである。
ここでやることの目的は
- Ubuntu から Windows への参照の手間を減らすこと
で、やることは以下の2つ。
- あらかじめ Windows のユーザホームフォルダ直下に
Rails
フォルダを作成しておく - Ubuntu のユーザホームディレクトリから
Rails
フォルダに対してシンボリックリンクを貼る
以下の作業で lns -s
を実行し、Rails
をフォルダにシンボリックリンクを貼る。
$ pwd
/home/hoge # Ubuntu 上のホームディレクトリ
$ ln -s /mnt/c/Users/hoge/Rails # シンボリックリンクを貼る
ls -l
を実行すると、
$ ls -l
total 0
lrwxrwxrwx 1 hoge hoge 27 May 22 23:15 Rails -> /mnt/c/Users/hoge/Rails
上記のとおり、Windows のフォルダに対してシンボリックリンクが貼れている。
あとはシンボリックリンクを貼ったフォルダに対して
- 既存の Rails プロジェクトをここに移動させる
- ここで Rails プロジェクトを新たに作成する
等を行うことで、Windows から Rails プロジェクトを編集することができる。
これで
- Rails アプリの管理は Ubuntu on WSL
- Rails アプリの編集は Windows
という構成ができた。
所感
気分によって今日は Mac、今日は Windows という感じで作業ができると嬉しいと思い、Windows での Rails 環境構築を実施してみた。
とりあえずこれで Windows で Rails の開発ができるようになったはずなので、これから遊んでみようと思う。