Windows 10 Anniversary Updateが開始されたということで再度Windows上にRubyおよびRailsをインストールする方法を記載します。
「windowsのbashでRails環境を構築してみる。(Windows 10 Insider Preview 14316版)」を修正してもいいのですが、追記箇所が多くなったので新たに作りました。
#Ubuntu on Windowsのインストール
まずはUbuntuのbashが使えるようにします。
「スタートメニュー」→「設定」→「更新とセキュリティ」を開くと
"開発者モード"というのがあるので、これを選択します。
次に「コントロールパネル」→「プログラムと機能」→「Windowsの機能の有効化または無効化」を開き、「Windows Subsystem for Linux(Beta)」をチェック
"Windows Subsystem for Linux(Beta)"を選択して、"OK"を押下(多分ここで再起動を行わないといけない)
続いては「Windowsキー+R」→「cmd」でコマンドプロンプトを開き、bash
と入力し、Enterキー
すると…途中で実行確認があるのでy
します。
Insider Previewではなかったのですが、続けてUNIXのユーザ名およびパスワードが聞かれるので任意に入力します。
ここまでくればbashのコマンドが実行可能です。
ついでにバージョンを確認しました。
"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
#Ruby on Railsのインストール
いよいよ大詰めのRailsのインストールです。まずはbundler
を入れます。
gem install bundler
作業用フォルダを作ってGemfile
を作成します。
mkdir rails_on_windows
cd rails_on_windows
bundle init
作成された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で有効」のどちらかを実施します。
- # gem 'therubyracer', platforms: :ruby
+ gem 'therubyracer', platforms: :ruby
最後のインストールしてRails以外のgemを入れてしまいます。
bundle install
以下のコマンドでRailsを立ち上げます。
bin/rails s
どうやら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.file_watcher = ActiveSupport::EventedFileUpdateChecker
+ #config.file_watcher = ActiveSupport::EventedFileUpdateChecker
Railsが立ち上がってますので、ブラウザでhttp://localhost:3000
を指定して開くと
Windows 10 Anniversary Updateの当日にあげるはずが最後でハマりました。動くようになりましたが、もう少しまともに動くと嬉しいですね。
開発するにはHomebrewみたいなパッケージマネージャをWindowsにないとつらいかな。PackageManagementはイマイチだし…
そうは言っても、Windowsでしか開発できない人の参考になれば幸いです。