Rails関連のことを調べてみた2022年09月13日

Rails関連のことを調べてみた2022年09月13日
目次

Railsのアソシエーション(has_many、belongs_to)でハマったこと

RailsでWebアプリの開発をしていて、下記のようなテーブルを構築しました。(青線は外部キーの関係)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840927/91790aa6-e187-e159-7c4d-2b967d3a31f5.png)
この際、各モデルについては、アソシエーションを考慮して、下記のような設定にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840927/d4872d12-43fd-8182-df90-7a24a4117a69.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840927/426fbb57-fa29-f8f1-892e-24f74a8ea6fd.png)
![image.png](https://qiita-image-sto

元記事を表示

herokuビルドでアプリがcrashしてしまった時の解決例

herokuにデプロイした際にビルドは成功したのですが、WEBページを開くと下記の画面になってしまいました。
1週間ほど嵌ったので備忘録として記載します。?
参考にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/3e3bc773-05ce-3a65-2112-ec106f64817d.png)

# 起点 「Application error」
ビルドが正常に終了したのに、WEBページに「Application error」画面が表示され、「heroku logs –tail」でログを確認してね!とあるのでターミナルで確認する。
以下のログが表示されていた。

“`zsh:heroku logs –tail
2022-09-12T03:32:48.194301+00:00 heroku[web.1]: Starting process with command `npm start`
2022-09-12T03:32:49.916104+00:00

元記事を表示

【作業効率厨】ターミナルでの作業効率がグンと上がるaliasの設定方法と設定例まとめ

# はじめに
現在新卒エンジニア1年目の私が多用している、「alias」による作業効率化を紹介します!
特に、**ターミナル上での作業が多い分野(gitなど)** でこうかばつぐんでございます。

# aliasとは
alias(エイリアス)とは、日本語で「別名」や「通称」という意味です。
aliasがどういうものかと言うと、一言で言えば**コマンドのショートカット**です。
ターミナルでよく打ち込む長いコマンドを省略して打ち込むことができます!

# aliasの設定方法
aliasは以下のコマンドで設定できます。
“`shell
# aliasの書き方
$ alias {省略形}='{本来のコマンド}’
# 例) git add -Aをgaaと省略する
$ alias gaa=’git add -A’
“`
この例の通りにaliasを設定すると、「gaa」と打つだけで「git add -A」を実行することができます!
まさに普段打っている長いコマンドを、あの煩わしいコマンドを、**たった数文字にショートカット**することができます!

ただし、このコマンドはターミナルを閉じると

元記事を表示

rails 7でdevice を使用するとusersモデルに独自で追加したカラムが保存されない。

先日の[watnow](https://github.com/watnows)のハッカソンでアプリを開発をした際にRails 7.0.3を利用して開発しました。
ハッカソンで作ったアプリでログイン機能をrails7かつdeviceで実装するという選択をしたところハッカソンにおいて貴重な2時間を失ってしまいました。その際に得た知識が誰かの役にたてばなと思い記事にさせていただきました。

### 環境
Rails 7.0.3
Ruby 3.1.2

## 状況
Rails 7でdeviceでアカウント登録する際に独自に追加したカラムが保存されないという状況にハマりました。form_withを使用して実装しており、deviceが用意してくれているemailやnameといったカラムは保存されます。

## エラー内容
deviceを使用してuserをcreateすると以下のようなエラーが出ました。
“` terminal:ログ
Started POST “/users” for ::1 at 2022-08-07 16:52:12 +0900
Processing by Devise

元記事を表示

Pumaの再起動に時間がかかる

本番のElastic Beanstalk環境にてRailsアプリをデプロイしたところ、Pumaの再起動に時間がかかりダウンタイムが発生しました。
なぜこの事象が発生したのかがわからず、調査を行ったので記録として残しておきます。

解決していないのでhelp wantedです。

## 前提
#### 環境
– ElasticBeanstalk環境 (Ruby 2.7 running on 64bit Amazon Linux 2/3.4.7)
– EC2インスタンス数:1台 (t3.medium)
– Puma 5.6.4

#### その他
デプロイ時にWeb、DBサーバーのCPU使用率、メモリ使用率に問題がないことから、インフラ側ではなくアプリ側の問題と推測しています。

## 発生した事象
デプロイ終了間際のアプリ再起動時に、Pumaが立ち上がるまでに時間がかかり(6分40秒)、その間にダウンタイム`502 Bad Gateway`が発生しました。

`/var/log/puma/puma.log`より
Pumaを落としたログ(17:56:22)
[![Image from G

元記事を表示

Render.comでRailsアプリをデプロイする方法

Herokuの無料プランが廃止され、代替サービスのRender.comを使ってみました。

https://qiita.com/koki_73/items/60b327a586129d157f38

非常に参考になる記事がありましたので、まずは上の記事を読んでいただくことをおすすめします。
この記事では注意点を補足したいと思います。

# render.yamlの設定

Blueprintsを使用するために、render.yamlを設定します。
その時、`plan: free`が書かれていることを確認してください。
これを設定しないと、Render.comでBlueprint Instanceを作成する時、クレジットカードを要求されます。
“`yaml
# render.yaml
databases:
– name: rails7_sample_staging
databaseName: rails7_sample_staging
user: rails7_sample
region: singapore

services:
– type: web

元記事を表示

[Rails]selectフォームにenumのリストを表示する2つの方法

すんごい基礎的な内容なのですが、2通りのやり方に出会ったので整理したかったのと、地味なとこでハマったので備忘録。

## やりたいこと
Postモデルにstatusというenumがあるとする。

“`ruby
class Post < ApplicationRecord enum status: { active: 10, inactive: 20 }, _prefix: true end ``` これをこういう感じ↓で表示したい。 ![スクリーンショット 2022-09-12 12.09.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/b0e3c242-c7da-f570-f417-f87c24cf5242.png) htmlはこう。ブラウザで見える文字列とvalue属性を渡してあげたい。 ```html

OTHERカテゴリの最新記事