Edited at

windowsのbashでRails環境を構築してみる。(Windows 10 Anniversary Update版)

More than 1 year has passed since last update.

Windows 10 Anniversary Updateが開始されたということで再度Windows上にRubyおよびRailsをインストールする方法を記載します。

windowsのbashでRails環境を構築してみる。(Windows 10 Insider Preview 14316版)」を修正してもいいのですが、追記箇所が多くなったので新たに作りました。


Ubuntu on Windowsのインストール

まずはUbuntuのbashが使えるようにします。

「スタートメニュー」→「設定」→「更新とセキュリティ」を開くと

image

"開発者モード"というのがあるので、これを選択します。

次に「コントロールパネル」→「プログラムと機能」→「Windowsの機能の有効化または無効化」を開き、「Windows Subsystem for Linux(Beta)」をチェック

image

"Windows Subsystem for Linux(Beta)"を選択して、"OK"を押下(多分ここで再起動を行わないといけない)

続いては「Windowsキー+R」→「cmd」でコマンドプロンプトを開き、bashと入力し、Enterキー

すると…途中で実行確認があるのでyします。

Insider Previewではなかったのですが、続けてUNIXのユーザ名およびパスワードが聞かれるので任意に入力します。

image

ここまでくればbashのコマンドが実行可能です。

ついでにバージョンを確認しました。

image

"Ubuntu 14.04"だそうです。ちょっと古いかな。


Rubyのインストール


gitのインストール

前回のInsider Previewの通りに実行していきます。

まずはgitのインストールします。

sudo apt-get update

sudo apt-get install git

Insider Previewと違い管理者権限が必要らしくsudoをつけてコマンドを実行します。

途中に聞かれるパスワードは最初に設定したパスワードを入力すればOKなはずです。


rbenvのインストール

続いて、rbenvをインストールします。

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash

ここは前回通りで大丈夫です。

.bashrcに以下のパス設定を足します。

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

で、以下のコマンドで.bashrcを再読み込み(bash自体の再起動でもOK)

source ~/.bashrc


Rubyのインストール

いよいよRubyのインストールですが、コンパイルに必要なものを先に入れておきます。

sudo apt-get install gcc build-essential libssl-dev libreadline-dev zlib1g-dev

ここもsudoが必要です。

以下のrbenvのコマンドでRubyインストールします。(ここは正直長いです)

rbenv install 2.3.1

2.4.0まだpreview版ですが、インストール可能ですので、お好きなバージョンを。

最後に以下のコマンドを打って、インストールしたRubyを有効化します。

rbenv global 2.3.1

ruby -v

image

これでRubyのインストールは完了です。


Ruby on Railsのインストール

いよいよ大詰めのRailsのインストールです。まずはbundlerを入れます。

gem install bundler

作業用フォルダを作ってGemfileを作成します。

mkdir rails_on_windows

cd rails_on_windows
bundle init

作成されたGemfileを以下のように編集


Gemfile

source "https://rubygems.org"


- # gem "rails"
+ gem "rails"

Railsを入れる前に、Insider Previewと同様に最大の難所であるNokogiriの設定をしておく。

gem update --system

sudo apt-get install libxml2 libxml2-dev libxslt-dev
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/include/libxml2"

※下記のエラーおよび対応は現在は発生しないとのコメントを頂きました。

 発生した場合にのみ対応すればOKです。


で、Railsをインストールと行きたいところですが、このままbundle installをしてもエラーが出てしまいました。

--- ERROR REPORT TEMPLATE -------------------------------------------------------

- What did you do?

I ran the command `/home/chimame/.rbenv/versions/2.3.1/bin/bundle install --path vendor/bundle`

- What did you expect to happen?

I expected Bundler to...

- What happened instead?

Instead, what actually happened was...

Error details

ArgumentError: parent directory is world writable but not sticky

解決はhttps://github.com/bundler/bundler/issues/4599に書いてある通り、以下のコマンドをまず実施。

find ~/.bundle/cache -type d -exec chmod 0755 {} +

それから以下のbundle installでRailsを入れます。

(これを書いている時点ではRails5.0がインストールされます)

bundle install --path vendor/bundler

Nokogiriでエラーにかからなかったらゴールは目の前です。

sudo apt-get install libsqlite3-dev

sqliteで動かすだけですが、とりあえず入れておきます。

続けて、Railsプロジェクトを作ります。

bundle exec rails new . --skip-bundle

Railsの起動にJavaScriptのランタイムがいるのですが、

「Node.jsをインストールする」か「以下のgemをGemfileで有効」のどちらかを実施します。


Gemfile

- # gem 'therubyracer', platforms: :ruby

+ gem 'therubyracer', platforms: :ruby

最後のインストールしてRails以外のgemを入れてしまいます。

bundle install

以下のコマンドでRailsを立ち上げます。

bin/rails s

ところが・・・

image

どうやらhttps://github.com/Microsoft/BashOnWindows/issues/216に書かれていることらしく"Filesystem watchers like libinotify do not work"とのこと。

ならばということで、https://gorails.com/setup/windows/10に書かれているとおりに、config.file_watcher = ActiveSupport::EventedFileUpdateCheckerをコメントアウトにします。


config/environments/development.rb

- config.file_watcher = ActiveSupport::EventedFileUpdateChecker

+ #config.file_watcher = ActiveSupport::EventedFileUpdateChecker

もう一度bin/rails sを実行すると

image

Railsが立ち上がってますので、ブラウザでhttp://localhost:3000を指定して開くと

image

Windows 10 Anniversary Updateの当日にあげるはずが最後でハマりました。動くようになりましたが、もう少しまともに動くと嬉しいですね。

開発するにはHomebrewみたいなパッケージマネージャをWindowsにないとつらいかな。PackageManagementはイマイチだし…

そうは言っても、Windowsでしか開発できない人の参考になれば幸いです。

この記事のbashで作ったファイル等はエクスプローラで参照可能なので好きなエディタ等で作業できます。

image