- 1. Railsのアソシエーション(has_many、belongs_to)でハマったこと
- 2. herokuビルドでアプリがcrashしてしまった時の解決例
- 3. 【作業効率厨】ターミナルでの作業効率がグンと上がるaliasの設定方法と設定例まとめ
- 4. rails 7でdevice を使用するとusersモデルに独自で追加したカラムが保存されない。
- 5. Pumaの再起動に時間がかかる
- 6. Render.comでRailsアプリをデプロイする方法
- 7. [Rails]selectフォームにenumのリストを表示する2つの方法
- 8. Excel出力するcaxlsx_railsの使い方について
- 9. Active Record attribute methodまとめ(その④: Query, Read, Write編)
- 10. Active Record attribute methodまとめ(その③: PrimaryKey編)
- 11. Elastic Beanstalkのlogrotateについて
- 12. minitestでRailsをテストする際に使える検証メソッドの一覧と、そのメソッドに対応するAPIドキュメントのまとめ
- 13. 【Ruby】特定のレベルよりも重要なログのみを出力したい
- 14. 【EC2】DB作成時エラーのためにVimを使ってEC2内のファイルを編集
- 15. SQLの練習ができる学習サービス「SQLab」を作ってみた
- 16. Schema.rb(スキーマファイル)のまとめ
- 17. 初めてのウェブサービスに縦書きエディタを選んだ理由(3)
- 18. Ruby on Rails link_toのパスの引数に.idって、いるの?いらないの?(自分用メモ)
- 19. 【Rubocop】rubocop -Aを実行する前はexcludeを設定しておく
- 20. 【個人開発】1週間で約2,000人に使ってもらえたReactアプリをリリースするまでにしたこと
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: singaporeservices:
– 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
Excel出力するcaxlsx_railsの使い方について
## 環境
Rails 5.2
Ruby 2.6
Ubuntu 20.4## はじめに
RailsでExcel出力をする方法についての記事です。Excel出力をするgemに**caxlsx_rails**を利用します。RailsでExcel出力する方法についてググると、**axlsx_rails**というgemに関する情報が多く検索されます。caxlsx_railsの公式サイトを見ると、以前は、axlsx_railsという名前のgemで提供されていたが、caxlsx_railsという名前に変更されているようです。caxlsx_railsの公式サイト
https://github.com/caxlsx/caxlsx_rails## Excel出力の仕方
Gemfileに下記のgemを追加して、**bundle install**を実行します。
“`Gemfile
gem ‘caxlsx_rails’
“`Excel出力をするメソッド名をこの記事ではexportとします。routesにtasksコントローラーのexportメソッドへのルート情報を記述します。
“`r
Active Record attribute methodまとめ(その④: Query, Read, Write編)
# はじめに
今回はActive Recordのattribute methodのうち、Query, Read, Writeメソッドをまとめていきます。
(2022年6月時点。Rails7.0対応。)
その他のメソッドについては、別記事でまとめてますので是非ご覧ください。
[ActiveRecord attribute methodまとめ(その①: BeforeTypeCast編)](https://qiita.com/maabow/items/33ad5328b192e3adb49e)
[ActiveRecord attribute methodまとめ(その②: Dirty編)](https://qiita.com/maabow/items/0a5a228fb6c1447877e0)
[Active Record attribute methodまとめ(その③: PrimaryKey編)](https://qiita.com/maabow/items/012c473312961ce7e060)# 検証環境
以下のschemaとmodelに基づいて検証を行なっています。
“` R
Active Record attribute methodまとめ(その③: PrimaryKey編)
# はじめに
今回はActiveRecordのattribute methodのうち、PrimaryKeyメソッドをまとめていきます。
(2022年9月時点。Rails7.0対応。)
[BeforeTypeCastメソッド](https://qiita.com/maabow/items/33ad5328b192e3adb49e)、[Dirtyメソッド](https://qiita.com/maabow/items/0a5a228fb6c1447877e0)は全attributeに関連するメソッドでしたが、今回は主キー専用のメソッドになります。
関連したメソッドも多いので、[BeforeTypeCastメソッド](https://qiita.com/maabow/items/33ad5328b192e3adb49e)、[Dirtyメソッド](https://qiita.com/maabow/items/0a5a228fb6c1447877e0)の内容も確認してみてください。
PrimaryKeyメソッドを使う機会は多くはないかもしれませんが「こんなのもあるんだ〜」程度に知っておいて損はな
Elastic Beanstalkのlogrotateについて
## ログローテーションについて
Elastic Beanstalkのログローテーションについて調査をしたので、内容をまとめておきます。### ローテーションの設定
※以降はPumaのログについて記載していきますデフォルトの設定で、1時間に1度、該当ログのファイルサイズが10MBを超えていたらローテーションするようになっていました。
1時間に1度の契機は、下記cronジョブによって呼びだされます。
“`terminal
/etc/cron.hourly/cron.logrotate.elasticbeanstalk.puma.conf
“`ローテーションの設定ファイルについては下記コマンドで確認できます。
“`terminal
$ less /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.puma.conf
“`“`conf:logrotate.elasticbeanstalk.puma.conf
/var/log/puma/* {
su root root
minitestでRailsをテストする際に使える検証メソッドの一覧と、そのメソッドに対応するAPIドキュメントのまとめ
## はじめに
Rails標準のテスティングツールはminitest(をベースにRailsが独自拡張したもの)です。
現場ではRSpecがよく使われるとはいえ、Rails標準のminitestを使っている方も中にはおられると思います。
Railsのminitestには`assert`や`refute`(または`assert_not`)で始まる検証メソッドが数多く定義されていますが、かなり数が多いため全メソッドを把握している方は少ないのではないでしょうか。
また、それら検証メソッドは、
– minitestがデフォルトで提供しているもの
– Railsが独自に提供しているもの
– Capybaraのような外部gemが提供しているものなど様々です。そのため、メソッドの使い方を調べたくてもどのドキュメントで解説されているのかわからない、ということがよくあります。
そこでこの記事では、Railsのminitestではどんなメソッドが使えて、そのメソッドの使い方を調べたいときはどのドキュメントを見にいけばいいのかを一覧化してみました。
minitestでRailsのテストを書く
【Ruby】特定のレベルよりも重要なログのみを出力したい
# 概要
開発時にはデバッグログまで記録し、運用時には重要なログしか残さないという制御をするには、Logger#levelメソッドでログを記録するしきい値を指定します。# LOGの段階
* 6段階のログレベルに分けてログを記録します。* UNKNOWN
* 常に記録されるべき不明なエラー* FATAL
* プログラムをクラッシュさせるような制御不可能なエラー* ERROR
* 制御可能なエラー* WARN
* 警告* INFO
* 一般的な情報* DEBUG
* 低レベルの情報* Logger#levelメソッドにINFOを設定した記載例
“`ruby
require ‘logger’log = Logger.new(STDOUT)
log.level = Logger::INFO #INFO以上のログのみ出力log.debug(“debug message”)
log.info(“info message”)
log.warn(“warn message”)
“`上記の記載例だとINFOよりも重要度の低い情報は記
【EC2】DB作成時エラーのためにVimを使ってEC2内のファイルを編集
# エラー状況
railsによるアプリケーションの環境をdockerで構築し、以下のコードをEC2の中で実行し、データベースを作成しようとした。
“`
docker-compose exec app rails db:create db:migrate RAILS_ENV=production
“`
すると次のようにエラーが返ってくる。
“`
/usr/local/bundle/gems/spring-4.0.0/lib/spring/application.rb:101:in `block in preload’: Spring reloads,
and therefore needs the application to have reloading enabled.
Please, set config.cache_classes to false in config/environments/production.rb.
(RuntimeError)
“`
要するにconfig/environments/production.rbに書かれてある、config.cac
SQLの練習ができる学習サービス「SQLab」を作ってみた
# はじめに
![sqlab-min.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1074872/d8013e1c-7b65-0242-3de4-38778c2b94e5.png)
こんにちは、[タケ](https://twitter.com/take_paolo)と申します。
SQLの練習ができる学習サービス「SQLab」を作りました。https://sqlab.net/
※ PC専用です。
※ 推奨ブラウザはGoogle Chromeです。# なぜ作ったの?
SQLを学び始めた当初は **「SQLってなんか難しそう」** というイメージでしたが、
練習問題を解いていく中で次第に自力でクエリを組み立てることが **「クイズみたいで楽しい」** と思うようになりました。
そこでもっと多くの練習問題を解いてみたい、もう少し難易度の高い練習問題を解きたいと思ったのですが、・無料でバリエーション豊かな多くの練習問題に取り組める
・環境構築不要でブラウザ上ですぐに実践できる
・シンプルで使いやす
Schema.rb(スキーマファイル)のまとめ
[rails初心者]Schema(スキーマ)のまとめ ※自分用
初めに
Schemaについてまとめてみました。
※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス前提条件
すでにBookモデルが作成されていること
※じゃあモデルを作成していないとだめなのか?と思った方・・・実はそうでもないんです!!
schemaファイルは**デフォルトであるファイルになる**ので、モデルを作成していなくてもファイルは存在します
ただ何も書かれていない状態になります(;^ω^)主なやること
特になし
ご自身で確認したい人は・・・
①モデルの作成(rails g model 任意のモデル名)&migrateファイルの編集(任意のカラムを一つか二つ作ってみて下さい)
→忘れずに「rails db:migrate」
②Schemaファイ
初めてのウェブサービスに縦書きエディタを選んだ理由(3)
# 1.はじめに
GIGAスクール構想で児童・生徒が使うChromebook用に、縦書き原稿用紙の機能をウェブで提供しようと開発した作文ウェブアプリ「[sakubun](https://www.sakubun.tokyo)」。これまで、[初回](https://qiita.com/tategaki3/items/14266860629892376d29)に原稿用紙をどうやって実現したか、[2回目](https://qiita.com/tategaki3/items/1b779a2397c47d6c27b9)には作成した原稿の保存・ダウンロード機能の実装をご紹介してきました。3回目はページネーションをどうやって実装したかをご紹介します。https://www.sakubun.tokyo/
# 2.ページネーションとは
ページネーションとは、ページ割りやページ送りのことで(正直、実装の必要性を感じるまでそんな言葉があることも知りませんでしたが……)、Googleで検索すると一番下に出る数字でページが選べるやつです。原稿用紙というとやはり縦20字詰め、横20行の計400字詰め
Ruby on Rails link_toのパスの引数に.idって、いるの?いらないの?(自分用メモ)
# はじめに
Ruby on Railsのlink_toの読み方についてなんとなく理解したので
自分用メモとして投稿します。
(自分にしかわからない書き方となっていること、ご了承ください:bow:)# link_toのパスの引数に.idって、いるの?いらないの?
#### link_toの記述方法
“`
<%= link_to "表示したいテキスト", url又はパス %>
“`
補足:link_toのHTTPメソッドは特に設定しなければGETになる。
そのため、もし設定したい場合は下記のようにmethodオプションを設定すること
“`
<%= link_to "表示したいテキスト", url又はパス, method: :HTTPメソッド %>
“`#### 今回のコード
“`show.html.erb
<%= link_to "編集", edit_list_path(@list.id) %>
“`
コードの意味:ブラウザに”編集”と表示させるよ。
”編集”を押すとedit_list_path(@list.id)に飛ぶよ。#### 疑
【Rubocop】rubocop -Aを実行する前はexcludeを設定しておく
# Rubocopの自動修正
Rubocopの自動修正、rubocop -a や rubocop -Aは痛快なコマンドで、間違っているところを一括で全部直してくれる。使った後はなんか清々しい気持ちになる。
ただし、初めて利用する際の注意点もある。
それは、実行前にRubocopをよく設定していなければ、Rubocopの対象とすべきでないファイルにも自動修正をかけてしまうことである。
これをやってしまうとgithubでPRした時にchangedのファイル数がえげつないことになる.# rubocop.yml
rubocop.ymlにあらかじめ対象から除外したいファイルを指定しておくのが良い。
以下は設定の一例である。
“`AllCops:“`の下に“`Exclude“`とある。この下に除外したいファイルを指定していく。ここで“`*“` はワイルドカードなので“`bin/**/*“`と指定しておくことでbin以下のファイルを全て対象外とすることができる。
“`yaml:rubocop.yml
inherit_from:
– .rubocop_airbnb.yml
【個人開発】1週間で約2,000人に使ってもらえたReactアプリをリリースするまでにしたこと
## 今回リリースしたアプリ
– Destiny2というマイナーなFPSゲームの診断ツール(スマホ専用)
https://destiny-tolls.com/
![スクリーンショット 2022-07-30 16.59.48 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574875/82b4a0f0-4789-a7d7-737c-7746450f9933.png)## 使用技術
### フロント
– React 17.0.2### バックエンド
– Ruby 2.7.5
– Rails 6.1.5### インフラ
– Heroku
– cloudflare### その他(数値計測)
– GoogleAnalytics(GA4)## このアプリを作った背景
– きっかけはReactの勉強でした。– 勉強するなら何かアプリ作りながら勉強した方が楽しいので、私の好きなゲームのDestiny2に関するアプリ作ろうと思いました。
– Destiny2というゲー