見出し画像

Rails herokuでデプロイ.

herokuでデプロイ.

デプロイ時に参考にした記事.

Railsアプリの事前準備.

ルーティングの設定.

rootでトップページになにか設定しておく.

Rails.application.routes.draw do
 root to: 'top#index' #ここ設定.
 resources :posts do
   resources :comments, only: %i[create], shallow: true
 end
 resource :profile
 #~~略~~
end

Gemfile設定.

Gemfile

# sqlite3
# 上記をコメントアウトする.

group :development, :test do
 gem 'sqlite3' # 開発環境用で使用できるようこちらに記述.
 #~~略~~
end

group :production do
 gem 'pg' # ここ追加.
end

herokuは本番環境がPostgreSQLが初期設定なので合わせます.

ターミナルで以下を実行.

$bundle install --without production
本番用のgem(この場合はpg gem)をローカルの環境にはインストールしないようにするため.
bundle installに特殊なフラグ「--without production」を追加する.
引用:RailsToutorial

config/datebase.yml設定.

production:
 <<: *default
 adapter: postgresql
 encoding: unicode
 pool: 5
adapter: postgresql      ## postgreSQLのデータベースに接続する.
encoding: unicode        ## 文字コードの設定.今回はunicode
pool: 5                             ## DBに接続できる上限の数の設定.

config/environments/production.rbの設定

config/environments/production.rb

 config.assets.compile = true
 # falseからtrueへ変更する.

Railsでは本番環境で動的な画像の表示がデフォルトでオフなので,読み込めるように設定する.

ここまで来たら.さっそくデプロイしていきます.

前提条件.

・gitの設定済み
・githubの登録済み
・herokuの登録済み.

まだの方は以下から進めてみてください.

herokuにデプロイ.

$ git push heroku master

当たったエラー.

Failed to install gems via Bundler.

意味はBundler経由でgemのインストールが失敗した.という意味です.

Bundlerのバージョンがherokuの適してないバージョンだと出るエラーみたいです.

自身のバージョンを確認します.

$ bundler -v
Bundler version 2.2.20

Bundlerをherokuが適用されるバージョン2.1.4にバージョンダウンしていきます.

$ gem install bundler -v 2.1.4
$ bundle _2.1.4_ install
$ bundler -v 
Bundler version 2.1.4

これでバージョンダウン完了です.

Precompiling assets failed.

意味はアセットのプリコンパイルに失敗した.とのことです.

Uglifierは標準ではES5の文法規格までしかサポートしていない.
ES5ではテンプレートリテラル(`)に対応していないみたいです.

Railsで使うときは以下のように修正.

config/environments/production.rb

config.assets.js_compressor = :uglifier
# 上記のコードを以下のように修正する.
config.assets.js_compressor = Uglifier.new(harmony: true)

今回は,コメントアウトで対応.

config/environments/production.rb

config.assets.js_compressor = :uglifier

# 今回は必要がないので以下のようにコメントアウトする.
# config.assets.js_compressor = :uglifier

上記のエラー対応で以下をもう一度実行.

$ git push heroku master
remote: Verifying deploy... done.
To https://git.heroku.com/....git
  ….  master -> master

デプロイができました!!

herokuでマイグレーション.

$ heroku run rails db:migrate

PG::UndefinedTable: ERROR: relation "users" does not exist

usersテーブルより先にpostsテーブルが作成されて発生しているエラーみたいです.
(アソシエーションの設定をしているので…)

上記の記事を参考に読み込まれるマイグレーションファイルの順番を修正します.

$ git add .
$ git commit -m "fix:migration"
$ git push heroku master

もう一度.マイグレーションを実行.

$ heroku run rails db:migrate

これでherokuでのデプロイは終了です.

発行されたURLにアクセスできるようになります!!


この記事が参加している募集

スキしてみて

この記事が気に入ったらサポートをしてみませんか?