0
Help us understand the problem. What are the problem?

posted at

updated at

RailsアプリをHerokuにデプロイする方法

想定環境

Rails 5.0.7.2
(Rubyバージョンは後ほど指定する。筆者は当初2.6.3を使用←herokuがサポートしていないため後ほど変更が必要)

herokuへのデプロイ手順

1.herokuにアプリを作成

heroku login -i

でherokuにログイン(パスワードはAPIkeyでないとログインできない可能性あり)

$ heroku create アプリ名

2.本番環境用にGemfileとdatabase.ymlを変更

Gemfile
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.7', '>= 5.0.7.2'
# Use sqlite3 as the database for Active Record
- gem 'sqlite3', '~> 1.3.6'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets

gem 'sqlite3'がインストールされている場合はコメントアウトもしくは削除する。ここで確実にbundle installを忘れずに。

Gemfile
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
+  gem 'sqlite3', '~> 1.3.6'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# 本番環境ではPostgresqlを使う
+ group :production do
+  gem 'pg', '0.20.0'
+ end

テスト環境ではsqlite3,本番環境ではPostgreSQLを使うように記述。yamlファイルは以下のように変更。このように記述することでDBをPostgreSQLに変更している。(yamlファイルはインテンドに注意)

database.yml



production:
  adapter: postgresql
  encoding: unicode
  pool: 5
  database: message-board_production
  username: message-board
  password: <%= ENV['MESSAGE-BOARD_DATABASE_PASSWORD'] %>

3.アセットパイプラインのための設定をする

次に本番環境上でアセットパイプラインを通るようにプリコンパイル処理を実行する

config/environments/production.rb
config.assets.compile = false

を追記する。本番環境上でアセットパイプラインを自動で通るように設定を変更する。

$ rake assets:precompile RAILS_ENV=production

ここまでうまく行っているか確認したい場合には以下のコマンドを打ち込み,エラーが出なければ良い。

$ RAILS_ENV=production bundle exec rake assets:precompile

4.Rubyのバージョンを指定

現在(2022年5月22日),herokuは2.6.9、2.7.5、3.0.3、3.1.1のみサポートされているため,2.6.3は対応していない。(サポート状況)
これより,今回は2.6.9をインストールする。

Gemfile
source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

+ ruby '2.6.9' # 追記

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.7', '>= 5.0.7.2'

忘れずにbundle installをして,手元の環境も2.6.9に揃える

$ rvm install 2.6.9

ここまでで下準備は完了。最後にデプロイしていきます。

herokuにデプロイ

まずは忘れずに

$ git add .
$ git commit -m "コミットメッセージ"

をし,

$ git push heroku master

をした後に

$ heroku run rails db:migrate

以上にて完了。手順通りにやらないと(特にアセットパイプラインの設定)エラーが出る可能性があるので注意して行いましょう。

参考記事

https://qiita.com/mugayoshi/items/46e21917ad656082f164
https://qiita.com/WEByamori/items/4cab4be8ce336ed3e4d6
https://qiita.com/johnslith/items/bddc9032e03a411d0944
https://qiita.com/yoppy_yophy/items/af0d9eea05e524e52922

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?