こんにちは。Enjoy IT Life管理人の仁科(@nishina555)です。
プログラミングを行うにあたり、まず行わなくてはならないのものが開発環境の構築です。
開発環境の構築は一番はじめにやることでもあり、初学者にとっては一番はじめにつまずきやすいポイントでもあります。
今回はRuby on RailsのWebアプリ(以下Railsアプリ)に関する開発環境の構築手順について紹介をしたいと思います。
今回のゴールは『ローカル環境でRailsアプリが起動できるようになる』です。
単に実行コマンドを羅列するだけでなく、解説なども適宜加えました。Ruby on Railsをこれから勉強する方の参考になればと思います。
なお今回の開発環境はmacOS、rubyのバージョンは2.6.2、railsのバージョンは5.2.3となっています。
目次
rbenvの導入からRailsアプリを起動するまでの手順まとめ
まずはじめに、今回紹介するコマンドをもとにrails-appという名前のRailsアプリを起動するまでの手順をまとめました。
コマンドの解説は不要、とにかく構築手順を知りたいという方は以下を参考にRailsアプリの起動をしてみてください。
### rbenvでrubyをインストールする
$ brew install rbenv ruby-build
$ rbenv install 2.6.2
$ vim ~/.zhsrc
→ eval "$(rbenv init -)" を追加
$ source ~/.zhsrc
### Railsアプリの準備
$ mkdir rails-app
$ cd rails-app
$ rbenv local 2.6.2
$ gem install bundler
### Railsアプリの作成
$ bundle init
$ vim Gemfile
→ gem railsの行のコメントアウトを外す
$ bundle install --path vender/bundle
$ bundle exec rails new .
### Railsアプリの起動
$ bundle exec rails s
以下では上記のコマンドについて項目ごとに解説をしていきます。
rbenvでrubyをインストールする
rubyはrbenvで管理する方法がオススメです。
rbenvが開発環境に用意されていない場合は、Railsアプリを作成する前にrbenvの導入を行いましょう。
まずrbenv、ruby-buildをbrewでインストールします。
$ brew update
$ brew install rbenv ruby-build
rbenvでインストールできるrubyのバージョンの一覧はrbenv install -l
で確認ができます。
$ rbenv install -l
Available versions:
1.8.5-p52
1.8.5-p113
1.8.5-p114
...
(中略)
...
truffleruby-1.0.0-rc9
今回はRailsアプリで利用するrubyのバージョンを2.6.2とします。rbenv install
でrbenv経由でrubyをインストールできます。
$ rbenv install 2.6.2
実際にrubyがインストールされたかについてはrbenv versions
で確認ができます。
インストールされたバージョンが表示されればOKです。
$ rbenv versions
* system (set by /Users/toshiharu.nishina/.rbenv/version)
2.6.2
次にrbenvのセットアップを行います。セットアップはrbenv init
で行います。
コマンドを実行すると以下のようなガイドが表示されます。
$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:
eval "$(rbenv init -)"
ガイドに従い、シェルの設定ファイル(.bashrcや.zshrc)にeval "$(rbenv init -)"
を追加します。
$ vim ~/.zshrc
.zshrc
+ eval "$(rbenv init -)"
追加後、rbenvのセットアップが正しく読み込まれているか確認してみましょう。
まずはシェルの再起動もしくは以下のようにsourceコマンドでシェルの設定を読み込み直します。
$ source ~/.zshrc
rbenvのrubyが使われているかrubyのバージョンを確認してみましょう。
which ruby
でrbenv配下のrubyが参照されていれば設定はOKです。
$ which ruby
/Users/toshiharu.nishina/.rbenv/shims/ruby
rbenvについては『複数のバージョン管理も楽々!rbenvを利用したruby管理方法チュートリアル』で紹介していますので、興味のある方はご覧になってください。
Railsアプリの準備
つぎにRailsアプリを作成する前に必要な準備を行います。
まずはRailsアプリ用の作業ディレクトリを作成します。
$ mkdir rails-app
作業ディレクトリに移動後、Railsアプリで利用するrubyの設定をします。
rbenvでrubyのバージョンを設定するにはrbenv global
もしくはrbenv local
を実行します。
globalはデフォルトで利用するrubyのバージョンを変更するのに対し、localはコマンドを実行したディレクトリ配下で利用するrubyのバージョンを変更します。
今回はRailsアプリで利用するrubyのバージョンの指定なので、local
を利用します。
$ cd rails-app
$ rbenv local 2.6.2
rubyのバージョンは以下で確認できます。
$ rbenv versions
system
* 2.6.2 (set by /Users/toshiharu.nishina/git/rails-app/.ruby-version)
ruby -v
でrbenvで指定したrubyのバージョンが正しく反映されているか確認しておくとよいでしょう。
この時、rubyのバージョンが反映されていない場合はrbenv initの設定が正しく行われていない可能性があるので確認をしなおしましょう。
$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]
次にbundlerの準備をします。
bundlerは『gem同士の依存関係やgemのバージョンを管理する』gemです。
Railsアプリで利用するgemは基本的にbundlerを利用してインストールしていくことになるので、Railsアプリを作成する前にbundlerの準備をしておきます。
Railsアプリで利用するrubyにbundlerがインストールされているか確認します。gemの一覧はgem list
で確認できるので、その一覧にbundlerがあればOKです。
$ gem list | grep bundler
bundler (default: 1.17.2)
もしくはbundler
コマンドが実行できるか確認してみる方法でもOKです。
$ bundler -v
Bundler version 1.17.2
もしbundlerが見つからない場合はgem install bundler
でbundlerをインストールしておきましょう。
$ gem install bundler
Railsアプリの作成
ここから実際にRailsアプリを作成していきます。
Railsアプリで利用するgemはbundlerで管理します。bundlerの初期設定はbundle init
で行います。
bundler init
により、bundlerでgemを管理する際に必要になるGemfileが作成されます。
$ bundle init
$ ls
Gemfile
bundlerはGemfileの中身を参照してgemのインストールをおこないます。
bundle init
で生成されたGemfileはgem 'rails'
の行がコメントアウトされており、このままではrails
のインストールが実行されません。
ですので、コメントアウトを外してbundlerでrails
をインストールできるようにします。
$ vim Gemfile
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
- # gem "rails"
+ gem "rails"
bundlerを利用したgemのインストールはbundle install
で行います。インストール先は--path
オプションで指定できます。
今回は--path /vender/bundle
と指定し、Railsアプリに必要なgemはvender/bundle
配下にインストールするようにしています。
インストール完了後、Gemfile.lock、venderディレクトリが作成されます。
$ bundle install --path vender/bundle
$ ls
Gemfile Gemfile.lock vender
bundler経由でインストールされたgemはbundle list
で確認できます。
$ bundle list
Gems included by the bundle:
* actioncable (5.2.3)
* actionmailer (5.2.3)
* actionpack (5.2.3)
* actionview (5.2.3)
...
...
...
また、実際にインストールされたgemはGemfile.lockに掲載されています。
Gemfile.lock
GEM
remote: https://rubygems.org/
specs:
actioncable (5.2.3)
actionpack (= 5.2.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.3)
...
...
なお、bundle install
実行時にパスを指定した場合、.bundle/config
というファイルが作成されます。
.bundle/config
---
BUNDLE_PATH: "vender/bundle"
2回目以降『bundle install』を実行する際は生成されたconfigファイルが参照されるため、パスの指定を行わなくても初回に設定したパス(今回の例では『vender/bundle』配下)にgemがインストールされるようになります。
もし、gemのインストール先を指定しない場合はrubyのデフォルトのgemのインストール先に保存されます。
Railsアプリで利用するgemとrubyにインストールするgemをわけて管理したいときなどにパスの指定をします。(ちなみにぼくはRailsアプリのgemをインストールする際はパスを指定する派です。)
次にRailsアプリを作成します。
Railsアプリの新規作成はrails new
で行います。
rails newを実行しようとすると『Gemfileを上書きしていいか』と聞かれるますが、yesを選択して問題ありません。
byebugやspringなど、Railsアプリ開発に必要なgemがインストールされます。
なお、bundle exec
はbundlerでインストールしたgemを利用する場合につけるコマンドです。
つまり以下のコマンドは『bundler経由でインストールしたrailsを利用して、Railsアプリを新規作成する』という意味になります。
$ bundle exec rails new .
rails new
実行後、以下のようなRailsアプリのディレクトリが構築されます。
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── app
├── bin
├── config
├── config.ru
├── db
├── lib
├── log
├── package.json
├── public
├── storage
├── test
├── tmp
└── vendor/bundle
└── ruby/2.6.0
├── bin
├── build_info
├── cache
├── doc
├── extensions
├── gems
└── specifications
なお、今回はrails new
実行時にオプションを指定しませんでしたが、参考までによく使うオプションを掲載しておきます。
rails newでよく使うオプション
オプション | 内容 |
ーB, –skip-bundle | bundle installを行わない |
-T, –skip-test | test::unitを組み込まない。RSpecに変更するときなどに利用する |
-d, –database=DATABASE | データベースの指定(デフォルトはsqlite3) |
Railsアプリの起動
最後にRailsアプリを起動します。
Railsアプリはrails server
で起動します。rails s
と省略することも可能です。
rails new
のときと同様に、コマンドの先頭にbundle exec
をつけて実行します。
$ bundle exec rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.2-p47), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
上記のようにListening on...
のログが表示されたらRailsアプリの起動は完了しているので、localhost:3000
にアクセスします。
以下のような画面が表示されればOKです。
まとめ: rubyはrbenvで管理。Railsアプリのgemはbundlerで管理
以上でRailsアプリの環境構築と起動方法の手順について紹介を終わります。
- rubyのバージョンはrbenvで管理する
- bundle init、bundle installでRailsアプリに必要なgemをインストール
- rails newでRailsアプリの雛形を自動生成
- rails sでRailsアプリを起動
なお、今回はローカル環境でRailsアプリを起動させる方法について紹介しましたが、ローカル環境の代わりにDocker環境を利用する方法も別記事で紹介しております。
詳しくは『ローカル開発環境の構築不要!Dockerを利用したRailsアプリ起動手順』をご覧になってください。
この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!