0
1

More than 3 years have passed since last update.

Railsでscaffoldを、Herokuにデプロイするまで 

Last updated at Posted at 2020-01-30

はじめに

Railsでscaffoldで作成した簡易アプリを、Herokuにデプロイして、外部から利用できるようにするまでの一連の流れをまとめてみた。

環境

ruby 2.5.1p57
Rails 5.2.4.1
Ubuntu 16.04.5 LTS
Windows10
Vagrant

手順

Herokuでは、sqlite3が利用できず、PostgreSQLしか対応していないため、データベースは、必ず、PostgreSQLを指定してプロジェクトを作成します。
sqlite3のまま、Herokuにデプロイしようとするとコケるようです。

$rails new myapp -d postgresql
$cd myapp

Gemfileを開いて、gem 'pg'が記述されている事を確認する。

gem 'pg', '>= 0.18', '< 2.0'

補足
rails new時に、postgresqlを指定したため、Gemfileに、gem pgが、デフォルトで付いてくる事になります。rails new時に、postgresqlを指定しなかった場合、Gemfileでgem pgを追加して、gem sqlite3を削除して、bundle installをする事になります。因みに、gem pgはproductionに追加しないと、Herokuで動作できないので注意。

ググると、Gemfileにgem rails_12factorも追加するように指示している情報もあるが、どうやら、古いバージョンのRailsの場合に必要だったようで、自分のバージョンでは不要との事。

下記の記述がデフォルトである筈なので、これが、rails_12factorの代用をしているようです。

config/environments/production.rb
  # Use a different logger for distributed setups.
  # require 'syslog/logger'
  # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')

  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
  end

database.ymlを開いて、Herokuの本番環境用の設定を記述する。環境変数名は、Herokuが自動で用意してくれます。development用の設定は環境に合わせて個別に設定する必要があります。

production:
  url: <%= ENV['DATABASE_URL'] %>

scaffoldを作成する。

$rails g scaffold List name:string age:integer

データベースを作成した後、テーブルを作成する。

$rails db:create
$rails db:migrate

この段階でローカル環境でscaffoldが動く事を確認する。

$rails s -b 192.168.33.10 -p 3000

動きました。
無題.png
gitに登録します。

補足
rails newした時点で、git initも内部で走っているのだが、お約束としてやっておく。

$git init
$git add .
$git commit -m 'first commit'

Herokuにログインする。ログインアカウントを聞いてくるので入力する。
(※heroku loginコマンドを利用するには、事前に、Heroku CLI(Toolbelt)をインストールしておく必要があります)

$heroku login --interactive

Heroku上にアプリケーション名(リモートリポジトリ)を新規作成します。

$heroku create

git remoteに上記で作成したアプリケーション名を追加しなくても、自動で登録される事になります。念のために確認

git remote -v

ローカル環境から、Herokuのリモートリポジトリにpushします。この時、必ず、heroku createしてから、pushする事。

$git push heroku master

Heroku上に、PostgreSQLのDBを作成します。

$heroku run rails db:migrate

URLを確認して、ブラウザから表示します。

$heroku open

Manually visit https://polar-brook-18695.herokuapp.com/ in your browser.のように、作成されたURLが表示されるので、URLの最後に、アプリ名「lists」を付けて、ブラウザから表示してみる。
無題1.png
表示されました! 登録もOK。ちゃんと動いています。
無題2.png

ログアウトして終了です。

heroku logout

参考URL

0
1
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
0
1