Jex’s Note

Deploy on Heroku

介紹

Heroku 是雲端主機供應商,它有提供免費方案,提供 DB 及 mailgun etc.,如果只是一個小型不複雜的專案使用它還蠻合適的

如何 Deploy 到 Heroku

1) 安裝 Heroku 的 command 並登入

heroku login

2) 到你的 Repository 目錄裡

3) Push 你的 code 到 heroku

  • Production 不能使用 sqlite3,詳細說明在這
  • Production 要用 PostgreSQL,最好是 Dev 及 Production 都用 PostgreSQL
  • Production 一定要有 gem 'pg' 否則即使 deploy 成功,頁面也會噴錯
  • Gemfile.lock 必須要有,不要在 .gitignore 加上它

這裡可以先做個小修改,讓 App 能順利 deploy 再說,Postgres 安裝再另外解決,Gemfile :

gem 'sqlite3', group: [:development, :test]
gem 'pg', group: :production

如果 PostgreSQL 還沒安裝,在 bundle install 先略過它

bundle install --without production

Deploy 指令 :

heroku create
git push heroku master

當 app 被 deploy 時,heroku 會自動執行 bundle install

4) 觀看你的 rails app 頁面

heroku open

會自動打開瀏覽器

5) 完成

如果打算使用 Postgres 當作開發環境的 DB,安裝及設定請參考此篇的”連接 PostgreSQL 設定”

如何連到 Heroku Postgret

修改 database.yml,只需要簡單的設定這樣就好,其他的就交給 heroku

production:
  <<: *default
  adapter: postgresql
  encoding: unicode

migrate

heroku run rake db:migrate

成功後可以連到 heroku 的 rails console 看看 Table 是否建立成功

其他設定

Rails Log:heroku 的 log 只有標準輸出,所以要將 rails log 導到標準輸出,否則會很難 Debug

gem 'rails_12factor', group: :production

其他指令

觀看 log

heroku logs --tail

進入 console

heroku run rails console

查看 Postgrets 資訊

heroku pg

restart

heroku restart

刪除 Postgres PID

heroku pg:kill PROCESSID

重置 DB,使用這個 command 要確定你要這麼做

heroku pg:reset DATABASE_URL
或
heroku pg:reset DATABASE

Comments