Help us understand the problem. What is going on with this article?

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

More than 3 years have 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

chimame
finergy-a-tm
大阪府大阪市北区角田町8番1号 梅田阪急ビル オフィスタワー35F
https://finergy.a-tm.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした