Windows subsystem for linuxにUbuntuをインストールした環境にRuby on Rails開発環境を構築しようと思ったので、手順をまとめました。
要所要所にnokogiriに関する情報を名指しで出してますが、これはnokogiriで躓いたためです。
以下を参考に、Rails 5.1.6を導入しています。
Ruby on Rails 4.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました
構築する内容
Windows10(バージョン 1709)
Ruby 2.5.1
Rails 5.1.6
Ubuntu 16.04.4 LTS(windows subsystem for linux)
以上を構築していきます。
手順
メインは、Ruby on Rails環境構築ですので、WSLの導入などはさらっと行きます。
Windows subsystem for linux有効化
「Windowsの機能の有効化または無効」からWindows subsystem Linuxを有効にする。
Windows StoreからUbuntuをインストール & コマンドライン起動
Ruby on Railsの開発環境構築
パッケージのインストール(とアップデート)
# アップデート
$ sudo apt-get update
# 必要なパッケージのインストール
$ sudo apt-get -y install git curl g++ make
$ sudo apt-get -y install libssl-dev libreadline-dev
$ sudo apt-get -y install libyaml-dev libxml2-dev libxslt-dev
$ sudo apt-get -y install sqlite3 libsqlite3-dev nodejs
# nokogiriのための必須パッケージインストール
$ sudo apt-get -y install build-essential patch zlib1g-dev liblzma-dev pkg-config
rbenvのインストール
$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
ruby-build のインストール
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git
Ruby のインストール
rbenvでRubyの最新バージョン確認
インストールできる一覧を取得
$ rbenv install -list
listから、最新の2.5.1をインストール
$ rbenv install 2.5.1
※ちょっと待ちます…
systemに一度2.5.1を適用させる
$ rbenv global 2.5.1
# rbenvバージョン確認
$ rbenv version
2.5.1
# rubyのバージョン確認
$ ruby -v
ruby 2.5.1 xxxxx
Railsのインストール
gemrcの作成
gemのインストールはドキュメントをインストールするため遅いので、以下を設定しておく。
(遅くてもドキュメントなどあったほうがいい人は、この手順スキップです。)
$ vi ~/.gemrc
install: --no-document
update: --no-document
また、余談ですが、gem install でインストールする際は、-N オプションでで上記と同様な動作をします。
# Rubygemsより
-N, --no-document - Disable documentation generation
Railsのインストール
システムにgemでインストールしてしまうのではなく、
bundlerで必要なものはvendor/bundleに格納し、
bundle execで呼び出す構成を作ります。
プロジェクトディレクトリ作成
$ mkdir project_name
$ cd project_name
プロジェクト毎にのRubyバージョンを固定できるようにするには、プロジェクトディレクトリ内で、以下を実行します。
$ rbenv local 2.5.1
プロジェクトの初期化
$ bundle init
Writing new Gemfile to /path/to/project/Gemfile
作成されたGemfileに、Railsを記載
$ vi Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# Railsを5.1.6に固定(お好みで)
# gem "rails" だけでもOK(最新版)
gem "rails", "5.1.6"
プロジェクト内にgemインストールする
$ bundle install --path vendor/bundle
$ bundle exec rails new .
# Gemfileの上書を聞かれますが、上書きしてよいです。
テスト実行
railsコマンドを実行するときは、bundle execをつけるのを忘れないでください。
プロジェクト内にrails をインストールしたためです。
bundle exec rails s
=> Booting Puma
=> Rails 5.1.6 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.3 (ruby 2.5.1-p57), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
実行したRailsにアクセス。
http://localhost:3000
以上です。
補足
bundle install --path vendor/bundleに失敗した場合、以下を試して再実行してみてください。
$ bundle config build.nokogiri --use-system-libraries
$ bundle install --path vendor/bundle
nokogiriのインストールに躓いた場合、いくつか原因があるようですが、
僕の場合、「pkg-config」がないことによる問題でした。
公式のインストールガイドにも載っていないので、この問題に気付くのにだいぶ時間がかかりました。
失敗したときは、vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/nokogiri-1.8.2/mkmf.logなどにエラー原因が出ていたりするので、見てみましょう。