Ruby on Rails 6の開発環境構築

zax_developerRubyonRails

こんにちは、ザックス株式会社の開発担当のものです。

システム開発の現場でよく利用されるWebアプリケーションフレームワークの1つに『Ruby on Rails』があります。
今回はRuby導入からRuby on Railsの開発環境の準備までの手順を説明していきたいと思います。

目次

  1. Ruby on Railsとは
  2. Rubyの動作環境を用意
  3. Railsプロジェクト用のDBを用意
  4. Railsサーバーにアクセスできるようにポートを開放
  5. Railsプロジェクトを作成
  6. DBにテーブルを作成
  7. Node.jsとYarnを導入し、Webpackerをインストール
  8. 動作確認
  9. 最後に

1.Ruby on Railsとは

Ruby on Railsとは、Webアプリケーションのフレームワークであり、プログラミング言語としてRubyを使用しています。

国内でも利用されているケースが多く、代表的なサービスとして料理レシピコミュニティの「クックパッド」、情報キュレーション・ニュース配信アプリの「グノシー」、グルメレビューサイトの「食べログ」などがあります。

社内でも、サービスのプロトタイプを素早く作成する手段の1つとしてRuby on Railsを採用しています。

本記事では、Ruby on Railsを使用したWeb開発を行う人に向けて、環境構築のやりかたを説明していきたいと思います。

※LinuxサーバーCentOS 7.6に開発環境を構築する前提で進めていきます。

2.Rubyの動作環境を用意

ターミナルで作業していきます。

Gitをインストールします。

$ sudo yum -y install git
$ git --version
git version 1.8.3.1

rbenvをインストールします。

/home/{ユーザー名}
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

rbenvのPATHを設定します。

/home/{ユーザー名}
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ ~/.rbenv/bin/rbenv init
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

rbenvのパスが通っているか確認します。

/home/{ユーザー名}
$ rbenv --version
rbenv 1.1.2-28-gc2cfbd1

rbenv-doctorスクリプトを実行し、状態を確認しましょう。

/home/{ユーザー名}
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
...
Unless you plan to add Ruby versions manually, you should install ruby-build.
Please refer to https://github.com/rbenv/ruby-build#installation
...

ruby-buildが不足しているようなので、インストールします。

/home/{ユーザー名}
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

rbenv-doctorスクリプトをもう一度実行します。

/home/{ユーザー名}
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

ruby-buildが表示されていることを確認します。

次にインストール可能なRubyのバージョンを確認します。

/home/{ユーザー名}
$ rbenv install -l

今回はRuby 2.6.5をインストールします。

/home/{ユーザー名}
$ rbenv install 2.6.5
...
ERROR: Ruby install aborted due to missing extensions

足りないパッケージをインストールします。

/home/{ユーザー名}
$ sudo yum install openssl-devel readline-devel zlib-devel

もう一度実行します。

/home/{ユーザー名}
$ rbenv install 2.6.5

globalにセットします。

/home/{ユーザー名}
$ rbenv global 2.6.5
$ rbenv rehash
$ rbenv versions
* 2.6.5 (set by /home/{ユーザー名}/.rbenv/version)

Rubyのバージョンを確認します。

/home/{ユーザー名}
$ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]

問題なくインストールされていることが確認できました。

3.Railsプロジェクト用のDBを用意

今回はPostgreSQL 12を使用します。

公式サイトを確認しながらPostgreSQL 12をインストールします。

公式ダウンロードサイト

/home/{ユーザー名}
$ sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo yum install postgresql12 postgresql12-server postgresql12-devel

DBを初期化します。
※rootユーザーで実行してください。

# /usr/pgsql-12/bin/postgresql-12-setup initdb

DBを起動します。

# systemctl start postgresql-12

DBの自動起動を有効にします。

# systemctl enable postgresql-12

DBにアクセスできるか確認します。

# su - postgres
$ psql -l

テーブルが一覧で表示されればOKです。
exitコマンドで抜けましょう。

postgresユーザーのパスワードを設定します。
任意のパスワードを設定してください。

# passwd postgres

作業ユーザーに切り替えてから、postgresユーザーに切り替えるときにパスワードを求められるか確認します。

/home/{ユーザー名}
$ su - postgres
パスワード:

設定ファイルを修正します。

/home/{ユーザー名}
$ sudo vim /var/lib/pgsql/12/data/pg_hba.conf
変更前
...
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident
...
変更後
...
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust
...

“ident”の部分を”trust”に変更しています。

保存後、DBを再起動します。

/home/{ユーザー名}
$ sudo systemctl restart postgresql-12

4.Railsサーバーにアクセスできるようにポートを開放

Ruby on Railsを動かすためのアプリケーションサーバーであるPumaを利用するためには、Firewallのポートを開ける必要があります。

次のコマンドで3000番ポートを開放しましょう。

/home/{ユーザー名}
$ sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent

設定を反映します。

/home/{ユーザー名}
$ sudo firewall-cmd --reload

ポートが開放されているか確認します。

/home/{ユーザー名}
$ sudo firewall-cmd --list-all
...
ports: 3000/tcp
...

5.Railsプロジェクトを作成

プロジェクト専用のディレクトリを作成します。

/home/{ユーザー名}
$ mkdir railstest

Gemfileを生成します。

/home/{ユーザー名}/railstest
$ bundle init

Gemfileにあるrailsのコメントアウトを外します。

/home/{ユーザー名}/railstest
$ vim Gemfile
変更前
...
# gem "rails"
...
変更後
...
gem "rails"
...

Railsをインストールします。

/home/{ユーザー名}/railstest
$ bundle install --path vendor/bundle

DBにPostgreSQLを指定し、Railsプロジェクトをたちあげます。

/home/{ユーザー名}/railstest
$ bundle exec rails new . -d postgresql

エラーが発生するので、順番に対応していきます。

tzinfo-dataのエラーは、Gemfileの以下の記述を変更します。

/home/{ユーザー名}/railstest
$ vim Gemfile
変更前
...
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
...
変更後
...
gem 'tzinfo-data'
...

もう一度インストールします。

/home/{ユーザー名}/railstest
$ bundle install

pg_configのエラーは、pg_configの場所を指定してあげることで解決します。

/home/{ユーザー名}/railstest
$ bundle config build.pg --with-pg-config=/usr/pgsql-12/bin/pg_config
$ bundle install

6.DBにテーブルを作成

PostgreSQLに接続するためには、設定ファイルを編集する必要があります。

$ vim config/database.yml
変更前
...
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
...
変更後
...
default: &default
  adapter: postgresql
  encoding: utf8
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: postgres
  password: postgresユーザーのパスワードを入力
  host: localhost
...

設定ファイルの修正が終わりましたら、以下のコマンドでテーブルを作成します。

/home/{ユーザー名}/railstest
$ bundle exec rails db:create
Created database 'railstest_development'
Created database 'railstest_test'

7.Node.jsとYarnを導入し、Webpackerをインストール

Ruby on Rails 6からは、WebpackのラッパーライブラリであるWebpackerの使用がデフォルトになりました。

Webpackerをインストールするためには、Node.jsとYarnが必要になります。

まず、推奨版のNode.js12系をインストールします。

/home/{ユーザー名}/railstest
$ curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
$ sudo yum install -y nodejs
$ node -v
v12.16.1

次に安定板のYarn1.22.4をインストールします。

/home/{ユーザー名}/railstest
$ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
$ sudo yum install yarn
$ yarn -v
1.22.4

準備ができましたので、Webpackerをインストールします。

/home/{ユーザー名}/railstest
$ bundle exec rails webpacker:install

8.動作確認

実際にRails serverコマンドでPumaを起動し、ブラウザから確認してみます。

/home/{ユーザー名}/railstest
$ bundle exec rails s -b 0.0.0.0

http://{サーバーのIPアドレス}:3000にアクセスしてみましょう。

上記のウェルカムページが表示されればOKです。
無事にRailsアプリケーションが動作することを確認できました。

9.最後に

お客様に企画・提案を行う際に、実際に動作するモノを用意し、さわってもらうことでイメージが伝わりやすくなります。

最後までお付き合い頂きありがとうございました。