こんにちは、ザックス株式会社の開発担当のものです。
システム開発の現場でよく利用されるWebアプリケーションフレームワークの1つに『Ruby on Rails』があります。
今回はRuby導入からRuby on Railsの開発環境の準備までの手順を説明していきたいと思います。
目次
- Ruby on Railsとは
- Rubyの動作環境を用意
- Railsプロジェクト用のDBを用意
- Railsサーバーにアクセスできるようにポートを開放
- Railsプロジェクトを作成
- DBにテーブルを作成
- Node.jsとYarnを導入し、Webpackerをインストール
- 動作確認
- 最後に
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.最後に
お客様に企画・提案を行う際に、実際に動作するモノを用意し、さわってもらうことでイメージが伝わりやすくなります。
最後までお付き合い頂きありがとうございました。