LoginSignup
3
5

More than 3 years have passed since last update.

Rails アプリの新規作成手順

Last updated at Posted at 2019-07-12

忘備録として、できるだけクリーンな状態で Railsアプリを作成する方法をまとめてみました。GitHubへの同期、Herokuでの公開までやってみました。

初心者なので、アドバイスをいただければ嬉しいです。

開発環境

開発環境: Mac
IDE: RubyMine
データベース: Postges
開発環境サーバー: puma-dev

Ruby のアップデート

最新の Ruby を使います。執筆時点(2.7.2)

$ brew upgrade rbenv ruby-build
$ rbenv install -l # インストール可能なバージョンのリスト
$ rbenv instal 2.7.2
$ rbenv global 2.7.2

Yarn のインストール

Rails6 から必須になりました。

brew install yarn

Rails アプリの作成

rails_app フォルダーに Railsアプリを作っていきます。

$ cd rails_app/
$ mkdir app_name
$ cd app_name/
$ bundle init
$ vim Gemfile

Gemfileを編集します。

gem rails #を外す

gem を Railsアプリごとにインストールするために、オプション --path vendor/bundleをつけます(rails コマンドに bundle exec をつける必要が出てくる)。データベースとして、Postgres を指定します。

$ bundle install --path vendor/bundle
$ bundle exec rails new . --skip-bundle -d postgresql

Gemfile を編集して必要なGemを入れる。(特にいじらなくてもよい)
クリーンなインストールのため、もう一度 bundle install します。

$ rm -rf .bundle
$ rm -rf vendor/bundle
$ bundle install # 一度、path を指定すると、--path vendor/bundle は不要となる

Postgres

本番環境 Heroku では、データベース Postges を使用する予定なので、開発環境 Mac でも同じものを使用します。

$ brew install postgresql

バージョン確認

$ postgres --version

参考)データベースクラスタの場所(インストール時に自動で作成される)
/usr/local/var/postgres

Postgres がデフォルトで参照するデータベースクラスタを設定、パスを通します。ファイルを編集後は source .bash_profile で設定を反映させることを忘れないようにしましょう。

$ vim ~/.bash_profile
$ source ~/.bash_profile

.bash_profile に追記するコード

 # postgres
export PATH=/usr/local/Cellar/postgresql/12.4/bin/:$PATH
export PGDATA=/usr/local/var/postgres

Postgres の起動と終了

$ pg_ctl -D /usr/local/var/postgres start

$ pg_ctl stop

起動した状態でデータベースの作成(macのユーザー名で作ると、database.yml への追加の設定が不要になる。)

$ createdb app_name_development -O <mac_user_name>
$ createdb app_name_test -O <mac_user_name>
# 作成したデータベースを確認
$ psql -l

参考)config/database.yml に自動的に設定が書き込まれ、次のようになっています。

config/database.yml
# PostgreSQL. Versions 9.1 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: app_name_development

----略---

test:
  <<: *default
  database: app_name_test

---略---

参考)データベースの削除

$ dropdb db_name

Rails アプリ用のテーブルを作成

Postgres に使用するテーブルを作成します。

$ cd ~/rails_app/app_name
$ bundle exec rails db:migrate RAILS_ENV=development
$ bundle exec rails db:migrate RAILS_ENV=test

Webpack のインストール

$ bundle exec rails webpacker:install

Railsサーバーの起動

$ bundle exec rails server

起動の確認
http://localhost:3000

確認取れたら、Ctrl + C でサーバーを終了

puma-dev

puma-devを使うと、Railsサーバーを起動しなくてよいので便利です。ローカルで https:// 接続できるようになります。

puma-devの導入

$ brew install puma/puma/puma-dev
$ sudo puma-dev -setup
$ puma-dev -install -d test # デフォルトで http://appname.dev でアクセスする仕様だが、Chromeでエラーになるため .test に変更する。test でなくても良い

puma-devの設定

$ cd ~/.puma-dev
$ ln -s ~/rails_app/app_name/ app_name
$ cd ~/rails_app/app_name
$ touch tmp/restart.txt # puma-dev 再起動

(追記)Rails 6から config.hosts の設定が必要になりました。

development.rbに末尾に追記

config/environments/development.rb
  # Whitelist one hostname
  config.hosts << "app_name.test"

確認(rail server は起動しなくて良い)
http://app_name.test

GitHub

起動の確認が取れましたので、ここで GitHubに保存しておきます。

vendor/bundle の除外

.gitignore に追記する

/.bundle
/vendor/bundle # 追記

RubyMineの設定を保存したくない時

.gitignore に追記する

# Ignore IDE settings
/.idea

GitHubサイト で新しいレポジトリを作成する

snap_1313.png

初めてのコミットを Pushします。

$ git remote add origin git@github.com:creativival/app_name.git
$ git add -A
$ git commit -m 'first commit'
$ git push -u origin master

Heroku

無料で利用できるホスティングサービスで、Railsアプリを公開してみます。

まずは Heroku よりユーザー登録を済ませます。

Railsアプリでページを作っておかないと、Heroku上で表示できないため、トップページのみ作成します。

$ bundle exec rails generate controller StaticPages top

ルーティングを変更して、ルートにアクセスするとトップページを表示するようにします。

config/routes.rb
Rails.application.routes.draw do
  root 'static_pages#top'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

ありがたいことに Heroku は SSL 接続を無料で提供しています。Rails で SSL 接続を使えるように設定します。

config/environments/production.rb
config.force_ssl = true # コメントアウトを外す

本番環境のWEBサーバ(Puma)を設定します。

config/puma.rb
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count
port        ENV.fetch("PORT") { 3000 }
environment ENV.fetch("RAILS_ENV") { ENV['RACK_ENV'] || "production" }
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
preload_app!
plugin :tmp_restart

Procfileファイルを新規作成して、コードを記入します。

./Procfile
web: bundle exec puma -C config/puma.rb

Heroku にログインします。メールアドレス、パスワード、2段階認証の数字を入力します。

$ heroku login -i

Herokuアプリを作成します。

$ heoku create app-name # アンダーバーは使えません
$ heroku git:remote -a app-name # git と紐付けする

Heroku環境でのデータベースの設定を調べます。

$ heroku addons:create heroku-postgresql:hobby-dev # 初回のみ
$ heroku config
DATABASE_URL: postgres://<username>:<password>@<host>:<port>/<database>

参考)このデータベースの設定値を使って、RubyMine から接続できます。

ScreenShot_1652.png

以上で、rails側の設定はできたので、GitHub に保存します。

$ git add -A
$ git commit -m 'heroku settings'
$ git push origin master

Heroku にも git push します。

$ git push heroku master

Heroku環境でテーブルを作成します。

$ heroku run rails db:migrate

Railsアプリが公開できたか、確認してみます。

snap_1315.png

(追記)Herokuへの git pushでエラーが出た時

こちらの記事に助けられました。ありがとうございます。
[memo] Herokuで Could not find 'bundler' (2.0.1) と言われた

Rubyは最新版を使用していたので、bundlerのみアップデートすることで、deployに成功しました。

$ gem install bundler -v 2.0.2
$ rm Gemfile.lock
$ bundle install
$ git add Gemfile.lock
$ git commit -m 'version up bundler'
$ git push origin master
$ git push heroku master

remote: Verifying deploy... done.

さあ開発を進めましょう !

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5