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

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

2つの区間(Range)の重複を判定する方法

どうも、「病院なび」の開発チームメンバー甘利です。
今日は区間(Rangeクラス)の重なりの判定について説明します。

Rangeクラスを利用していると、それらが重なっているか?という判定をしたくなる時があります。
ActiveSupportを利用していれば .cover? メソッドを利用することができますが、
そうじゃない時はどうしたら良いでしょうか。

ふたつの閉区間を表すRangeオブジェクトの r1 と r2 があり、
r1, r2 の端をそれぞれ r1_s, r1_e、r2_s r2_e と表すとします。
さて、このふたつのRangeが重なっていることを判別するにはどうしたら良いでしょうか。

# 順当に考えてみる
ふたつのRangeの区間が重なっているとはどういうことかを書き出してみますと、
以下のいずれかが成り立つとき、とうことになります。
1. r1 の範囲に r2_s が含まれている
1. r1 の範囲に r2_e が含まれている
1. r2 の範囲に r1_s が含まれている
1. r2 の範囲に r1_e が含まれている

これをRubyのコードでそのまま書くと

元記事を表示

Webpackeコンパイルで詰んだこと

#備考
技術関連の詳細記載はないので悪しからず。

# なぜ起こったか
Herokuにデプロイしたのがきっかけです。
その際に依存関係解消のため、対象のバージョンを変更した。
デプロイに成功したが、ローカルでコンパイルできなくなった。
ローカルで関連するところ、モジュールなどインストールやアンインスール、アップデートした。

# 結論
本来、エラーを解決していくのが筋かと思いますが、さまざま調べ試して詰んだので、
アプリ構築を初めからやり直しました。遠回りかもしれませんが、
これも一つの方法かと思います。幸い、体系的まとまった教材を参考にしていたので、
再構築もし易かったです。
なにより、作り直したことで問題となっていたコンパイルが解消したのが良かったと思います。

元記事を表示

【Ruby on Rails】Rails consoleで特定のレコードのカラムの情報を更新する方法

## Rails console
“`
pry(main)> User.first.update_column(:name, “ごりら”)
“`
これは、Userテーブルの一番目のテーブルのnameカラムの内容を“ごりら“に変更したいとき

## SQL文
“`
SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
UPDATE `users` SET `users`.`name` = ‘ごりら’ WHERE `users`.`id` = 1
“`

こんな感じ。

元記事を表示

Aurora MySQLをサービス無停止でスケールアップ

# はじめに
医療系クラウドサービスを提供している会社で働いている2kaiです。

2022年7月に入ってから新型コロナウイルス感染爆発に伴い、患者及び医療スタッフの利用数が急増し、ピーク時間帯のデータベースCPU使用率がWriter、Reader共に監視の閾値を度々超えてくるという状態になりました。
と、思った次の日には100%に届くスパイクまで発生したために、急遽サービス無停止でスケールアップを実施しました。

現時点での月間アクセス数は1億リクエストを超えるくらいです(正確には感染爆発の前月の集計値になります)。
作業時間帯(22時頃)のアクセス数は850/min。

# システム概要
Ruby on Rails in awsで構成された、恐らく一般的なモノリスアプリケーションです。

– アプリケーションはWeb、Worker、Batchから構成
– Ruby on Railsで実装し、WriterとReaderに負荷分散するようにコーディング
– 各アプリケーションはElastic Beanstalkで管理
– データベースはAurora MySQLで、WriterとRead

元記事を表示

リーダブルRSpec(カスタムマッチャー+RSpec::ContextHelper編)

## 読みやすいRSpec書いていますか?


### 読みやすいRSpecって何?

「簡潔でテストケースを見てテスト内容が理解しやすいもの」と考えています
ここでのテストケースとは、it/exampleブロックのことを指しています


## 例題
例えば、Rails製REST APIのRequest Specを書くことを考えてみます
コードは正しいか確認していないので、多少間違っていてもお許しください?

### 前提
* APIはたくさんある
* 良くないけど、クエリパラメータのチェックをcontrollerでしているため、テストはRequest Specで行う


### APIの共通仕様
* Server Errorを除き、HTTPステータスコードは必ず200で返す
* HTTPレスポンスボディはJSON形式で返す
* 成功時のレスポンス
“`json
{ “status”: 200, “message”: “Succeed”, “data”: … }
“`
* 未認証時のレスポンス
“`json
{

元記事を表示

Amazon Linux 2 の環境で rails c を立ち上げた際、日本語入力をすると Encoding::UndefinedConversionError が出ていたので修正

そもそもの文字の設定が問題でした。

`/etc/sysconfig/i18n` など共通で読み込まれるファイルに下記を追記したら入力できるようになりました。

“`
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
“`

元記事を表示

railsの基礎まとめ

# 前提
書籍アプリみたいなのを前提に書いています
### railsの更新系

**createメソッド**
値の設定、DBへの保存までを一気に行うメソッド

“`
irb(main):014:0> Book.create(
irb(main):015:1* name: “キングダム”,
irb(main):016:1* published_on: Time.parse(“20201024”).ago(2.months),
irb(main):017:1* price: 498,
irb(main):018:1* publisher: Publisher.find(1),
irb(main):019:1* )
“`

上記を分解して記述する方法

**newメソッド**
モデルオブジェクトの作成
createメソッドとは違い、保存はされていない
saveメソッドを使い保存を行う

“`
irb(main):001:0> book = Book.new
=> #

元記事を表示

Rails mapメソッドがふんわりしてたので調べてみた

### はじめに
現場に入るとコードの至るところに扱い慣れていないメソッドが登場します。
これまでの記事でもpluckメソッドを紹介しました。
https://qiita.com/tatsu0209/items/61bdbe46216991aeb8d3
でも、現場でいちばん目にしたメソッドってなんだろうか・・・
そう、それはおそらくmapメソッドだ。
なんとなくわかったふりでふんわりと読んでいたので色々と調べてみました。
その結果を備忘録として残したいと思います。
もしもおかしな点やお気づきの点がありましたらご指摘いただけると大変ありがたいです。

### 環境(自分のPC)
Ruby 2.7.1
Rails 6.0.5

### mapメソッドとは
公式ドキュメントでは次のように説明されています。
>各要素に対してブロックを評価した結果を全て含む配列を返します。ブロックを省略した場合は Enumerator を返します。

簡単に言うと、要素を順番に取ってきて、指定した処理をしてくれるメソッドです。
記述方法としては次のようになります。
~~~ ruby
配列.map { |変数|

元記事を表示

【rails入門】youtube埋め込み

# やりたいこと
特定のyoutube動画をrailsアプリケーションで表示したい

# まずは埋め込み方法
埋め込みたいyoutube動画を再生して右クリックで`埋め込みコードをコピー`をクリックします!
> [W/X/Y – Tani Yuuki (Official Lyric Video)](https://youtu.be/mp2-w15SXms)
![スクリーンショット 2022-05-16 14.06.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/29e242dc-63ca-3125-6dfb-e22bcd22ac44.png)

そして`ctrl + v`でペーストすると↓のようになると思います。
(ペーストする場所は表示したい場所)
“`html:index.html