Rails関連のことを調べてみた

Rails関連のことを調べてみた
目次

【AWS】【Rails】ログインリクエストをSQLiだと判定されてしまった際のメモ

# はじめに
※当記事にはWAFの設定に関しての具体的内容は含まれていない旨ご了承ください🙏
Rails及びAWSを活用した案件開発を行っていたある日のことでした

# 問題
「特定のユーザーがログインしようとした際、必ずエラー画面が表示されてしまうので調査頂きたい」といった趣旨のお問い合わせがありました。
ひとまずアプリケーションのログをAthenaで追ってみても問題事象に関連していそうなログが残っておらず、一見して原因が分からないという状況でした。

# 今回の対処法: WAFの検証ルールを緩和
アプリケーションのログに何も残っていないという点から、より前段で止まっていると仮定してWAFのログを確認しました。すると以下のようなログが残っていました
~~~
AWS-AWSManagedRulesSQLiRuleSet
MANAGED_RULE_GROUP
BLOCK
[{conditiontype=SQL_INJECTION, location=BODY, matcheddata=[authenticity_token, &, user, [login_name], –dayo&

元記事を表示

Railsでinputにdisabled属性を指定した場合のパラメータ送信に関する注意点

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# はじめに
Railsアプリケーションを開発する際、フォームのinput要素にdisabled属性を指定すると、そのinputからの値はサーバーに正しく送信されないという現象があります。本記事では、この問題に対する対策と回避策について説明します。

# 問題の概要
disabled属性が指定されたinput要素は、ユーザーからの入力を受け付けないようになりますが、それによってその値がフォームからサーバーに正しく送信されなくなります。これは、セキュリティ上の理由からブラウザがこのような挙動を示すためです。

# 対策方法
## readonly属性の利用
disabled属性と同様に、readonly属性もinput要素を読み取り専用にしますが、異なる点としてreadonly属性を指定したinputはフォームから値を正常に送信できます。そのため、readonly属性を使用することで、ユーザーが値を変更できないようにしつつ、値を正しく送信することができます。
“`erb
<%

元記事を表示

Stripeを利用したサブスクリプション導入におけるシステム連携注意ポイント

## はじめに

BitStarのモリヤです。
[BitStar Advent Calender](https://qiita.com/advent-calendar/2023/bitstar)21日目です。

現在開発中の[BitStar Match](https://bitstar.tokyo/match/)というプロダクトでは定額課金制の有料機能を提供しています。
サブスクリプション機能を実現するにあたり、以下の観点から外部サービスである**Stripe**を利用することとなりました。

– 決済処理実装の工数削減
– クレジットカード情報等の機密情報のシステム側での保持が不要

https://bitstar.tokyo/match/

#### Stripeとは

オンライン決済処理を安全かつ簡単に導入可能にするサービス。

https://stripe.com/jp

![スクリーンショット 2023-12-21 11.08.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260734

元記事を表示

「Loco」をCloud Runで実行する

## はじめに

[PONOS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ponos)の22日目の記事です。

最近Ruby on Rails(以下Rails)を触っていると、「うーん、型が欲しい」とわがままな悩みを抱えていました。
そこでC#のBlazorを触りはじめ、「おー!型だ!」と喜んでいました。
ただBlazorを触っていると「書きずらいな…」とさらに悩みを抱えました。(シンプルに努力不足)
そんな贅沢な悩みを抱えている中、
「RailsライクなWebフレームワークがRustからでたぞ!」
という記事を拝見し「どんなものか…」と触り、「あ、めっちゃRailsや」と感動したので今回のアドベントカレンダーの記事にすることにしました。
## Locoとは?
クラスメソッドさんがまとめてくださっているので引用させていただきます。
> Loco は、Rails からインスピレーションを得た Rust用のWebフレームワーク
> ほぼすべての Rails 機能が含まれている
>> Controller

元記事を表示

【Rails】TailwindCSSでフラッシュメッセージを実装してみた

この記事は「[RUNTEQ Advent Calendar 2023](https://qiita.com/advent-calendar/2023)」の22日目に参加しています:christmas_tree:
## はじめに
こんにちは、あっぴー(@super-appy)と申します。
プログラミングスクールに通ってRuby on Railsを学習しています。
初学者のため、内容に誤りや不足がある場合はコメント等いただけますと幸いです。
宜しくお願い致します。

## 記事の概要
現在、ポートフォリオとなるアプリを開発しています。
カリキュラムではBootstrapを使っていましたが、今回はTailwindCSSを使用しています。
TaillwindCSSでのフラッシュメッセージの実装についてまとめてみました。

### 完成イメージ
[![Image from Gyazo](https://i.gyazo.com/0c83c11508d3a8bab5870aff64a85746.gif)](https://gyazo.com/0c83c11508d3a8bab5870aff64a8

元記事を表示

社内勉強会開催したった

# はじめに
[Hubble Advent Calendar 2023](https://qiita.com/advent-calendar/2023/hubble)の16日目[^1]です!
[^1]:平日のみの投稿なので22日ですが16日目の記事としています。

Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

[前回はコードレビューの観点](https://qiita.com/power3812/items/5556f5381b5e6de3565a)について投稿しました。

Hubbleのバックエンドチームはありがたいことに業務委託の方を含めて11人います。しかし、大人数になってくると同じ仕様でも各人によってロジックが変わったり変数名が違ったりという課題が出てきます。また、それらを毎回レビューするのは、レビューワーの負担が大きくなります。
そのため、どうにかコードの書き方をある程度統一化できないかと勉強会を開催しました!

## 開催方法
勉強会は、発表者が一方的に話

元記事を表示

bin/devでrails sを起動するとbinding.pryなどの標準入力が見えなくなる

# Rails 7でbin/devでデバッグ時の問題と対処法

Rails 7系でbin/devを使用してサーバーを起動している際に、binding.pryやdebugを利用すると、プロンプトに入力した文字が表示されない問題があります。
具体的には、コードにbinding.pryを挿入しても、入力した文字が見えず、入力が空白のように見えます。

この問題の原因は、Rails 7でbin/devによって使用されているForemanが標準入力を適切にハンドリングできないためです。

## 現状の対処法
### pry-remoteの使用

– Gemfileにgem ‘pry-remote’を追加し、bundle installを実行します。
– binding.pryの代わりに、binding.remote_pryをコードに挿入します。
– 別のターミナルから$ pry-remoteを実行すると、そのターミナルでデバッグが可能になります。

**デメリット**:多くのターミナルを開く必要があり、手間がかかる。

### ForemanとRailsサーバーを別々に実行

bin/dev

元記事を表示

[Rails]enumについて改めて整理

## モデルのenumについて
:::note
そもそも**enum**とは

**enumとは、1つのカラムに指定した複数個の定数を保存できる様にする為のモノ**
:::

– 指定した複数個の定数以外の値は保存できない
– カラムに指定した定数が入っているレコードを取り出すのが容易に
– データベースには整数値として保存
– アプリケーション内ではシンボルや文字列として扱われる
– 状態に応じたメソッドを自動生成してくれる

### enumを使用すると嬉しいこと
##### コードの可読性と意図の明確化
enumを使うことで、状態やオプションを整数値ではなく、意味のある名前(シンボルや文字列)で表現できます。これにより、コードの可読性が向上し、他のエンジニアがコードを理解しやすくなります。

##### エラーの減少
整数値を直接使用する代わりにenumを使うことで、誤った値を割り当てるリスクを減らすことができます。これにより、データの整合性を維持しやすくなります。

##### メソッドの自動生成
Railsのenumは、状態に応じたメソッド(login?, logout!など

元記事を表示

大規模 Rails で役立つテクニック: コード品質の担保

# はじめに

先日、LTイベント「Qiita Night~Rails~」にて登壇させていただきました。

https://increments.connpass.com/event/297116/

そこで、Railsで大規模Webアプリケーションを 開発するときに知っておきたいテクニックを Qiita の Rails を例にいくつか紹介しました。発表資料はこちらです。

アーカイブ動画もあります。