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

  • 55
    いいね
  • 2
    コメント

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