key | column | type |
---|---|---|
PK | id | integer |
- | name | string |
- | string | |
- | password_digest | string |
key | column | type |
---|---|---|
PK | id | integer |
FK | user_id | integer |
- | name | string |
- | description | text |
- | expired_at | datetime |
- | priority | integer |
- | status | integer |
key | column | type |
---|---|---|
PK | id | integer |
- | name | string |
key | column | type |
---|---|---|
PK | id | integer |
FK1 | task_id | integer |
FK2 | label_id | integer |
ローカル環境:Herokuのインストールと紐付けは終わっている。
- ruby 3.0.1
- rails 6.0.3
- bundler 2.2.33
- yarn 1.22.17
- node.js 16.13.1
Heroku環境:rubyとnode.jsのbuildpackがインストールされている。
ターミナルにて、Herokuにログインし、新しいアプリケーションを作成
heroku login
heroku create
HerokuのSSL証明書に便乗して使用できる(Herokuのサブドメインでのみ有効)
config/enviroments/production.rbファイルでコメントアウトされている以下のコードをアクティブに変更
config.force_ssl = true
デフォルトでは、本番環境でimagesファイルは使えない設定のため。
config/enviroment/production.rb ファイルの記述の一部を以下のように変更(falseをtrueにする)
config.assets.compile = true
- image_tagを使用
- app/assets/images内のファイルの場合、リンクパスはimagesまでのディレクトリを記載しない。
- X:image_tag("/app/assets/images/ファイル名.拡張子")
- ○:image_tag("ファイル名.拡張子")
- JPEGファイルの場合は拡張子を".jpg"に設定
config.webpacker.ymlには、extract_cssの設定が記述されており、デフォルトではfalseとなっているが、本番環境ではこれがtrueに設定されている。つまり、このため本番環境でもbootstrapを使用する場合は、以下の記述が必要。
app/views/layouts/application.html.erbのheader部分にstylesheet_pack_tagの記載を追加。
<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
sendgridのアカウントを作成し、api keyも入手している状態
ターミナルにて、以下を実行
heroku addons:create sendgrid:starter
ターミナルにて、以下を実行
heroku config:set SENDGRID_USERNAME=apikey
heroku config:set SENDGRID_PASSWORD=作成したapi key
config/enviroments/production.rbに、以下のコードを追記。
「ここを自分のドメインに変更」と記載された場所は変更すること。
Rails.application.configure do
# 省略
# 追記
config.action_mailer.default_url_options = { host: 'ここを自分のドメインに変更.herokuapp.com' }
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
domain: "heroku.com",
address: "smtp.sendgrid.net",
port: 587,
authentication: :plain,
enable_starttls_auto: true
}
end
bundleを実行できる環境制限がされており、デプロイ時にエラーとなる。
ターミナルにて、以下を実行
bundle lock --add-platform x86_64-linux
ターミナルにて、以下を実行
rails assets:precompile RAILS_ENV=production
app/controllers/application_controller.rbに以下を追記
class ApplicationController < ActionController::Base
before_action :basic_auth unless Rails.env.production?
private
def basic_auth
authenticate_or_request_with_http_basic do |name, password|
name == ENV["BASIC_AUTH_NAME"] && password == ENV["BASIC_AUTH_PASSWORD"]
end
end
end
- envファイルを準備
アプリケーションのルートディレクトリに.envファイルを作成し、以下を記述(ユーザー名、パスワードは自分で決めて)
BASIC_AUTH_NAME = "ユーザー名"
BASIC_AUTH_PASSWORD = "パスワード"
.gitignoreファイルに以下を追記
.env
- dotenv-railsのインストール
Gemfileのtest, developmentに以下を追記しbundle install
group :development, :test do
gem "dotenv-rails"
end
ターミナルにて、以下を実行
bundle install
ターミナルにて、以下を実行。
heroku config:set BASIC_AUTH_USER=ユーザー名
heroku config:set BASIC_AUTH_PASSWORD=パスワード
アプリケーションのルートディレクトリにProcfile を作成し以下を記述し保存
release rails db:migrate
ターミナルにて、以下を実行
git add -A
git commit -m "fix:本番環境で動作するよう設定変更"
ターミナルにて、以下を実行
git push heroku master
heroku run rails db:migrate