ryota21silvaの技術ブログ

Funna(ふんな)の技術ブログ

これまで学んだ技術の備忘録。未来の自分が救われることを信じて

Rails

Railsの利点と欠点、RailsがDDDや大規模開発に向いていない理由

知り合いが「Railsの長所ってなんやっけ?」って話をしてたので、その辺のRailsの長所・短所とか、RailsがDDDや大規模開発に向いてない理由を自分なりに整理してみた。 間違っている点などあれば是非ご指摘頂きたいです。 ※2023/07/21 追記: 本記事において…

マイグレーションファイルについて

マイグレーションファイルとは データベースの設計図。 マイグレーションファイルを実行すれば、マイグレーションファイルを元にDBが作成される。 →マイグレーションファイルを作成しただけではDBに反映されない。 マイグレーションファイルを作成 rails g m…

【Rspec】build,create / sequence, trait, transientなど

build, createなどの違い DBへ保存するか否かなど違いがある。 メソッド 戻り値 DB保存 DB保存(アソシエーション) ID build() モデルインスタンス x o nil build_stubbed() モデルインスタンス x x 適当な値 create() モデルインスタンス o o DB保存された値…

【Rails】404、500エラーをハンドリング(slack通知も)

エラーハンドリングのメモが残ってたから、体系的な内容に纏めてみた。 どうせなのでコッチに移しておく。 エラーハンドリングをする 404エラー時は、404エラー用のテンプレートを表示させる。 500エラー時は例外(エラー)クラス、エラーメッセージ 、バック…

Rails6にSemanticUIを導入

Rails6でのSemantic UIの導入 BootstrapのフレームワークであるSemantic UIをRails6で使ってみたので、以下に導入方法を記しておきます。 Semantic UI公式 以下の記事もよければ参考にしてください。 【Rails】Semantic UIを使って動的にフラッシュメッセー…

Rails6にjQueryを導入

Rails6でjQueryを導入する方法 yarn add jquery package.jsonとyarn.lockを確認すると、jQueryが追加されていることが分かる。 (package.json) { "name": "zero_calorie", "private": true, "dependencies": { "@rails/actioncable": "^6.0.0", "@rails/acti…

【Rails】マイグレーションファイルをmigrateする前に戻す方法(その他マイグレーション関連のコマンド)

be rails db:migrate:statusでmigrateの状況を確認。 upになっているファイルがmigrateされている。 $ be rails db:migrate:status database: zero_calorie_development Status Migration ID Migration Name ----------------------------------------------…

【Rails/Rspec】リクエストスペックでAPIをテストする際に、よくやること

リクエストスペックの特徴 HTTP 動詞に対応するメソッド(get 、post 、delete 、 patch)を使う。 capybaraは使わない。 HTTPのレスポンスのステータスコードと実際のデータを含んだレスポンスボディを返す 200: OK - リクエストは成功し、レスポンスととも…

selializerを使ったAPIの作成と、リクエストスペックについて

jsonのserializerとは? jsonを生成する仕組みのこと。 この生成したJSONのデータをレスポンスとして返す。 ActiveRecordは ActiveModel::Serialization を include している。 なので、そのまま以下のような記述もできる。 module Api module V1 class Arti…

DBの整合性を守るtransactionについて

transactionとは 複数のSQL文をtransactionという一つの単位にまとめることで、それぞれのSQLの処理が全て成功した場合にのみ、SQLの処理結果をDBに反映するよというもの。 典型的なのは銀行口座の例で、 ①A口座の残高から¥1,000引き落とす ②B口座の残高を¥1…

クラスの継承(単一テーブル継承)

クラスの継承 あるクラスを継承して、新たにクラスを作成すること。 よくある例だと、Animalクラスとそれを継承するDogクラス、Catクラスみたいな。 クラスの継承を行うことで、継承元の親クラス(スーパークラス)に定義された機能を、子クラス(サブクラス)で…

RESTful、リソース、URLとは

ソフトウェア開発においては、RESTの概念が重要 RESTfulとは あらかじめ決められたリソースを定義し、それに沿ってアクションとhttpメソッドを関連づけるという考え方。統一された書き方でコードを記述できる。 URLを先に考えるのであって、ルーティングを先…

Rspec備忘録(随時アップデート)

RSpecでテストを書く時に、よく使うけど忘れがちな文法とかをまとめていこうと思います。 ※随時書き足していきたい have_selector have_selector 'h1', text: '大事なお知らせ' expect(page).to have_selector 'a[data-method=delete]', text: 'delete' expe…