Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fumtas1k/task_app
万葉課題
https://github.com/fumtas1k/task_app
database heroku rails6 ruby
Last synced: 27 days ago
JSON representation
万葉課題
- Host: GitHub
- URL: https://github.com/fumtas1k/task_app
- Owner: fumtas1k
- Created: 2022-01-31T02:25:45.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2022-03-25T01:04:31.000Z (almost 3 years ago)
- Last Synced: 2024-12-03T15:46:22.167Z (about 1 month ago)
- Topics: database, heroku, rails6, ruby
- Language: Ruby
- Homepage:
- Size: 361 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# README
## Table Schema
### User
| key | column | type |
|-----|--------|------|
| PK | id | integer |
| - | name | string |
| - | email | string |
| - | password_digest | string |
### Task
| key | column | type |
|-----|--------|------|
| PK | id | integer |
| FK | user_id | integer |
| - | name | string |
| - | description | text |
| - | expired_at | datetime |
| - | priority | integer |
| - | status | integer |
### Label
| key | column | type |
|-----|--------|------|
| PK | id | integer |
| - | name | string |
### Labeling
| key | column | type |
|-----|--------|------|
| PK | id | integer |
| FK1 | task_id | integer |
| FK2 | label_id | integer |# Herokuデプロイ手順
# 前提条件
ローカル環境:Herokuのインストールと紐付けは終わっている。
- ruby 3.0.1
- rails 6.0.3
- bundler 2.2.33
- yarn 1.22.17
- node.js 16.13.1Heroku環境:rubyとnode.jsのbuildpackがインストールされている。
# 手順
## 1. Herokuに新しいアプリケーションを作成
ターミナルにて、Herokuにログインし、新しいアプリケーションを作成
```ruby
heroku login
heroku create
```## 2. SSL強制設定
HerokuのSSL証明書に便乗して使用できる(Herokuのサブドメインでのみ有効)
config/enviroments/production.rbファイルでコメントアウトされている以下のコードをアクティブに変更
```ruby
config.force_ssl = true
```## 3. 画像ファイル、bootstrap等使用する場合は設定
### 3.1. app/assets/images内のファイルを使用する予定の場合は、以下を設定
~~デフォルトでは、本番環境で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"に設定### 3.2. bootstrapを使用する場合、以下を設定
config.webpacker.ymlには、extract_cssの設定が記述されており、デフォルトではfalseとなっているが、本番環境ではこれがtrueに設定されている。つまり、このため本番環境でもbootstrapを使用する場合は、以下の記述が必要。
app/views/layouts/application.html.erbのheader部分にstylesheet_pack_tagの記載を追加。
```ruby
<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
```## 4. メール送信機能を使う場合(sendgrid)
### 4.1. 前提条件
sendgridのアカウントを作成し、api keyも入手している状態
### 4.2. Herokuにsendgridのプラグインを導入
ターミナルにて、以下を実行
```ruby
heroku addons:create sendgrid:starter
```### 4.3. Heroku上の環境変数にapi keyをセット
ターミナルにて、以下を実行
```ruby
heroku config:set SENDGRID_USERNAME=apikey
heroku config:set SENDGRID_PASSWORD=作成したapi key
```### 4.4. アプリケーションからapk keyを利用できるよう設定
config/enviroments/production.rbに、以下のコードを追記。
「ここを自分のドメインに変更」と記載された場所は変更すること。
```ruby
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
```## 5. Gemfile.rockを修正
bundleを実行できる環境制限がされており、デプロイ時にエラーとなる。
ターミナルにて、以下を実行
```ruby
bundle lock --add-platform x86_64-linux
```## 6. アセットプリコンパイル
ターミナルにて、以下を実行
```ruby
rails assets:precompile RAILS_ENV=production
```## 7. Basic認証設定
### 7.1. controller全体に認証をかける
app/controllers/application_controller.rbに以下を追記
```ruby
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
```### 7.2. ローカル環境でも認証をかけた状態を検証したい場合
- envファイルを準備
アプリケーションのルートディレクトリに.envファイルを作成し、以下を記述(ユーザー名、パスワードは自分で決めて)
```ruby
BASIC_AUTH_NAME = "ユーザー名"
BASIC_AUTH_PASSWORD = "パスワード"
```.gitignoreファイルに以下を追記
```ruby
.env
```- dotenv-railsのインストール
Gemfileのtest, developmentに以下を追記しbundle install
```ruby
group :development, :test dogem "dotenv-rails"
end
```ターミナルにて、以下を実行
```ruby
bundle install
```### 7.3. Herokuに認証をセット
ターミナルにて、以下を実行。
```ruby
heroku config:set BASIC_AUTH_USER=ユーザー名
heroku config:set BASIC_AUTH_PASSWORD=パスワード
```## 8. 自動でmigrateする設定
アプリケーションのルートディレクトリにProcfile を作成し以下を記述し保存
```ruby
release rails db:migrate
```## 9. git にコミット
ターミナルにて、以下を実行
```ruby
git add -A
git commit -m "fix:本番環境で動作するよう設定変更"
```## 10. Herokuにデプロイ
ターミナルにて、以下を実行
```ruby
git push heroku master
heroku run rails db:migrate
```