Ruby on Rails チュートリアル 環境構築

背景

仕事では .net C# を主戦場にしていますが、他言語も学習してみよう! ということで Ruby を選択。 ついでに .net MVC が影響を受けている rails も一緒に学習してみることにしました。

Rubyの学習については、「プロを目指す人のためのRuby入門」を一通り終えている状態です。

https://railstutorial.jp/images/layout/logo.png?1304201481

目標

Ruby on Rails チュートリアルを一通りやって見るのを目標にします。

railstutorial.jp

今回の範囲

チュートリアルではCloud9を使用して開発していますが、今回は自分のPC(MacOS)に環境を構築し進めていきます。 また、巷ではRubyRailsをプロジェクト毎にバージョン管理する方が多いようなので、それもやって見ます。*1

環境構築

前提環境

rbenv

複数バージョンのrubyを簡単に切り替える環境を提供してくれるツールです。

参考サイト

rbenv を利用した Ruby 環境の構築 | DevelopersIO

rbenvとは?(rbenvを利用したRubyのインストール) - Qiita

rbenv + ruby-build はどうやって動いているのか - takatoshiono's blog

rbenvでrehashがいらなくなった – bgbgbg

rbenvインストール後、Rubyのインストール・切り替えを行います。

Rubyインストール

  • インストール可能なRubyのバージョンを調べる

「rbenv install --list」

rbenv install --list
Available versions:
      ・
      ・
  2.4.2
  2.4.3
  2.4.4
  2.5.0-dev
  2.5.0-preview1
  2.5.0-rc1
  2.5.0
  2.5.1
  • Rubyをインストール

「rbenv install <バージョン>」

rbenv install 2.4.4
  • 環境全体のRubyバージョン指定

「rbenv global <インストール済みバージョン>」

rbenv global 2.5.0
ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ cd rails-tutorial
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ rbenv local 2.4.4
$ rbenv version                                                                                                                                                                                                                                                       
2.4.4 (set by /Users/user/Projects/ruby/study/rails-tutorial/.ruby-version)
$ ruby -v                                                                                                                                                                                                                                                             
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-darwin17]

bundler

Railsをプロジェクト毎にインストールするため、先にbundlerをインストールします。 rbenvを使っているのでコマンドは「rbenv exec gem install bundler」を実行。

※ bundlerは全体で使うのでグローバルインストール

$ rbenv exec gem install bundler                                                                                                                                                                                                                                      
Fetching: bundler-1.16.3.gem (100%)
Successfully installed bundler-1.16.3
Parsing documentation for bundler-1.16.3
Installing ri documentation for bundler-1.16.3
Done installing documentation for bundler after 4 seconds
1 gem installed

現在のrubyにインストールされたgemの一覧を調べる

$ rbenv exec gem list                                                                                                                                                                                                                                                 

*** LOCAL GEMS ***

bigdecimal (default: 1.3.2)
bundler (1.16.3)
io-console (default: 0.4.6)
json (default: 2.0.4)
openssl (default: 2.0.7)
psych (default: 2.2.2)
rdoc (default: 5.0.0)

参考サイト

Rails開発環境の構築(rbenvでRuby導入からBundler、Rails導入まで)(Macport編) - Qiita

Railsのローカルインストール

Railsをカレントディレクトリにインストールする まずはGemfileの作成と編集

$ cd rails-tutorial
$ bundle init
Writing new Gemfile to /Users/user/Projects/ruby/study/rails-tutorial/Gemfile
$ vim Gemfile
$ cat Gemfile                                                                                                                                                                                                                                                         
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails", "5.1.4"  # ← ローカルに5.1.4(チュートリアルで使用しているバージョン)を指定

railsを vender/bundle ディレクトリ以下にインストール ( ls でGemfile.lock とvendorディレクトリが作成されたのを確認)

$ bundle install --path vendor/bundle
$ ls                                                                                                                                                                                                                                                                  
Gemfile      Gemfile.lock vendor

hello_app プロジェクトを作成

ようやくチュートリアルの「1.3 最初のアプリケーション」で使用するhello_appプロジェクトを作成します。 上記でインストールしたrailsを使用してプロジェクトを作成するため「bundle exec rails new」を実行します。 また「--skip-bundle」を指定してrails new 時に bundle install が発動しないようにします。

$ bundle exec rails new hello_app --skip-bundle
$ ls                                                                                                                                                                                                                                                                  
Gemfile      Gemfile.lock hello_app    vendor
$ cd hello_app
$ ls
Gemfile      README.md    Rakefile     app          bin          config       config.ru    db           lib          log          package.json public       test         tmp          vendor

最後に作成したプロジェクト内でgemのインストールを行います。
この時も「--path vendor/bundle」を付けてプロジェクト専用にgemをインストールします。
(この bundle install --path vendor/bundle で、再びrails(及び関連Gem)が今度はRailsプロジェクトの vender/bundle ディレクトリ以下にインストールされる)

$ bundle install --path vendor/bundle

rails server

bundle でrails をインストールしたので rails server は以下のコマンドで実行します。

$ bundle exec rails server

Heroku セットアップ

1.5 からデプロイ先として使用するHerokuの環境構築を行います。

$ brew install heroku/brew/heroku
$ heroku --version                                                                                                                                                                                                                                            [16:08:37]
heroku/7.7.10 darwin-x64 node-v10.7.0

以上

*1:結果としてこれが一番大変でした。