- 1. 【AWS】【Rails】ログインリクエストをSQLiだと判定されてしまった際のメモ
- 2. Railsでinputにdisabled属性を指定した場合のパラメータ送信に関する注意点
- 3. Stripeを利用したサブスクリプション導入におけるシステム連携注意ポイント
- 4. 「Loco」をCloud Runで実行する
- 5. 【Rails】TailwindCSSでフラッシュメッセージを実装してみた
- 6. 社内勉強会開催したった
- 7. bin/devでrails sを起動するとbinding.pryなどの標準入力が見えなくなる
- 8. [Rails]enumについて改めて整理
- 9. 大規模 Rails で役立つテクニック: コード品質の担保
- 10. 「Learn Hotwire and Turbo with a free Rails 7 tutorial」をやってみた
- 11. 【初学者】環境構築備忘録【Docker + Ruby 3.2.2 + Rails 7.0.8 + React 18.2.0 + Node.js 21.5.0 + TailwindCSS + daisyUI + PostgreSQL】
- 12. Docker compose を使ってRails7.1系で新規アプリのひな型を作り、サーバーに接続しよう
- 13. 【Rails】whereとscopeの苦手意識を克服するためにまとめてみた
- 14. Ruby on Railsのnew()メソッドについての詳細解説
- 15. Ruby on Railsのnew()メソッドの基礎解説
- 16. vite-railsを使って画像を表示する
- 17. 開発環境のpumaでhttps接続をを有効にする
- 18. There is 1 other session using the database. の修正方法
- 19. 【rails】rspecでENVをスタブ化した際に詰まった話
- 20. ActionDispatch等をスタンドアローンで動かしてミニマムなRailsのような何かをDIYしたら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 を例にいくつか紹介しました。発表資料はこちらです。
アーカイブ動画もあります。
【初学者】環境構築備忘録【Docker + Ruby 3.2.2 + Rails 7.0.8 + React 18.2.0 + Node.js 21.5.0 + TailwindCSS + daisyUI + PostgreSQL】
# はじめに
お疲れさまです!
おおくまです!今回は、**Docker + Ruby 3.2.2 + Rails 7.0.8 + React 18.2.0 + Node.js 21.5.0 + TailwindCSS + daisyUI + PostgreSQL**で環境構築してみました!
個人的に苦戦したので、備忘録として残したいと思います!
# 注意点
:::note warn
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::# 環境
:::note
– Docker
– Ruby3.2.2
– Rails7.0.8
– React18.2.0
– Node.js21.5.0
– TailwindCSS
– daisyUI
– PostgreSQL
:::# 手順
まずは作業フォルダやファイルを作っていきます!
“`:ターミナル
mkdir test_appcd test_app
mkdir back front
touch back/Dockerfile back/Gemfile back/Gemfile.lo
Docker compose を使ってRails7.1系で新規アプリのひな型を作り、サーバーに接続しよう
# この記事のゴール
Docker composeを使ってRails newコマンドによる新規アプリのひな型とdevelop環境を作ります最初にDockerについても触れていきます。
## 事前準備
まずは皆さん、Docker desktopをインストールしておいてください。※Ruby,SQL,RailsのインストールはDockerfileにそれぞれをインストールするためのコマンドを書き込むことで省略されます。とても便利。
## 1. Dockerとは
### Dockerとは何か
Dockerとはコンテナという仮想化技術を用いてアプリケーションを簡単に構築、実行することができるプラットフォームです。macでもwindowsでもDockerを使えば常に同じ環境を作り出し、アプリケーションを実行することができます。ゆえに環境の違いによる問題を最小限にできます。
また、開発環境から本番環境へ移行すること(デプロイ)が非常に容易になります。
## 2. Docker composeとは
複数のコンテナを実行するためのツールです。
コンテナをまとめてひとつのコマンドで操作
【Rails】whereとscopeの苦手意識を克服するためにまとめてみた
# はじめに
お疲れさまです!
おおくまです!今回は、“Ruby on Rails“の“whereメソッド“と“scope“についてです!
特に理由があるわけではないですが、なんとなく苦手意識がありました。笑
そんな苦手意識を克服するためにまとめてみました!# 注意点
:::note warn
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::# 環境
:::note
Ruby 3.2.2
Rails 7.0.6
:::# 前提条件
前提条件として、このような“テーブル“と“レコード“があるとします!
# whereメソッドとは
https://railsguides.jp/active_record_querying.html
“Ruby
Ruby on Railsのnew()メソッドについての詳細解説
#### はじめに
Ruby on Railsでの`new()`メソッドはオブジェクトのインスタンス化に中心的な役割を果たします。この記事では、`new()`メソッドの基本から応用まで、その使い方と重要性を深く掘り下げます。
#### new()メソッドの基本
– **機能**:
– `new()`はRailsのモデルや他のオブジェクトに対して、新しいインスタンスを作成するために使います。
– 例:`User.new(name: “Alice”, email: “alice@example.com”)`は、名前とメールアドレスを持つ新しい`User`インスタンスを生成します。
– **重要性**:– `new()`によって生成されたインスタンスは、データベースに保存される前にメモリ上に存在します。
– これにより、データベースに保存する前にバリデーションを実行でき、データ整合性を保つことが可能になります。#### new()メソッドの応用
– **複雑なデータ構造**:
– `new()`は、ネストされ
Ruby on Railsのnew()メソッドの基礎解説
#### はじめに
Ruby on Railsにおける`new()`メソッドは、オブジェクトのインスタンス化に不可欠なメソッドです。この記事では、`new()`メソッドの基本的な使い方、重要性、および応用例について詳しく解説します。
#### new()メソッドの基本
– **概要**:
– `new()`メソッドは、Railsのモデルや他のオブジェクトを初期化するために使用されます。
– このメソッドは新しいインスタンスを生成し、オプションで属性を初期化することができます。
– **使用法**:– 例えば、`User`モデルの新しいインスタンスを作成する場合、`User.new(name: “Alice”, email: “alice@example.com”)`のように記述します。
– これにより、名前とメールアドレスが設定された`User`オブジェクトの新しいインスタンスが作成されます。#### new()メソッドの重要性
– **データ整合性の保持**:
– `new()`メソッドは、データベー
vite-railsを使って画像を表示する
## やりたいこと
railsの `image_tag` みたいな感じで、ヘルパーメソッドを使って画像を表示させたい
## 方法
vite-railsには、`vite_image_tag` というヘルパーメソッドが用意されているので、これを使う。
### 1. 画像をsourceCodeDir配下に置く
`vite.json`ファイルで設定したsourceCodeDir配下に画像を置くことでヘルパーメソッドからアクセスできるようになる。
自分の環境だと、
“`jsonc
{
“all”: {
“sourceCodeDir”: “app/assets”,
“watchAdditionalPaths”: []
},
…
}
“`となっているので、`app/assets/images/sample.svg` に画像を追加。
### 2. vite_image_tagで画像を表示する
あとは、
“`erb
<%= vite_image_tag 'images/sample.svg' %>
“`で画像を表示するだけ。
## 参
開発環境のpumaでhttps接続をを有効にする
## はじめに
開発環境のpumaを自己署名証明書でhttps対応させます。任意のFQDNでアクセスし、証明書はブラウザ側で例外指定する想定です。## 環境
* AlmaLinux 9.3
* Ruby 2.7.8
* Rails 6.1.4.7
* puma 5.5.2## 自己署名証明書の作成
“`
$ cd /path/to/app
$ mkdir -p config/ssl && pushd $_
$ openssl req -x509 \
-newkey rsa:4096 \
-keyout server.key \
-out server.crt \
-days 3650 \
-noenc \
-subj ‘/CN=dev.example.com’ \
-extensions san \
-config <( \
There is 1 other session using the database. の修正方法
# 概要
テストを行う為、`rspec`コマンドを入力した際、下記のエラーが表示されました。今回は、このエラーの修正方法について説明します。# エラーの内容
エラーの内容に、`データベースを使用している他のセッションが1つあります`と記載されています
“`sh
# 入力コマンド
rspec# エラーの出力内容
rails aborted!
ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: database “***************” is being accessed by other users (ActiveRecord::StatementInvalid)
DETAIL: There is 1 other session using the database.Caused by:
PG::ObjectInUse: ERROR: database “***************” is being accessed by other users (PG::ObjectInUse)
DETA
【rails】rspecでENVをスタブ化した際に詰まった話
# はじめに
あるシステムの自動テストをrspecで作成していた際に、`Please stub a default value first if message might be received with other args as well.`というエラーが表示され詰まった時のお話です。# 問題
下記を含んだテストコード実行した際にエラーが表示されました。
~~~
allow(ENV).to receive(:[]).with(‘HOGE’).and_return(‘111’)
~~~
エラーについて、chatgptに聞いてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3382528/286bed48-1b00-2638-ca3f-8a2bcb2e7409.png)
ENVの[ ]メソッドが`HOGE`以外の引数で呼び出されている箇所が存在することが問題のようです。# 解決策
chatgptの回答のように、allow(ENV).to receive(:[]).an
ActionDispatch等をスタンドアローンで動かしてミニマムなRailsのような何かをDIYしたらRailsともっと仲良くなれた話
# 前置き
Webアプリケーションエンジニアとして働き始めて4年といくらか、そこそこの浮気期間は挟みつつも長らく付き合い続けているRuby on Railsだが、たまに必要に迫られてコードを見るくらいでその中身に関しては正直まるで知らない。Railsのことをもっと知りたい。いったいどうすれば良いだろう…
![o0300022814160302731.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283780/c4e26d6a-6a27-207b-1687-7679b2c6767e.jpeg)
![スクリーンショット 2023-12-17 11.51.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283780/7e4c2f25-909d-5447-8de2-1b79dcf7a457.png)
もちろんRailsになっちまうのはDHHでもなければ無理なので、Railsのコンポーネント、今回の場合は特にA