並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 133件

新着順 人気順

activerecordの検索結果1 - 40 件 / 133件

activerecordに関するエントリは133件あります。 railsrubyActiveRecord などが関連タグです。 人気エントリには 『パーフェクトRails著者が解説するdeviseの現代的なユーザー認証のモデル構成について - joker1007’s diary』などがあります。
  • パーフェクトRails著者が解説するdeviseの現代的なユーザー認証のモデル構成について - joker1007’s diary

    最近、パーフェクトRuby on Railsの増補改訂版をリリースさせていただいた身なので、久しぶりにRailsについて書いてみようと思う。 まあ、書籍の宣伝みたいなものです。 数日前に、noteというサービスでWebフロント側に投稿者のIPアドレスが露出するという漏洩事故が起きました。これがどれぐらい問題かは一旦置いておいて、何故こういうことになるのか、そしてRailsでよく使われるdeviseという認証機構作成ライブラリのより良い使い方について話をしていきます。 (noteがRailsを使っているか、ここで話をするdeviseを採用しているかは定かではないので、ここから先の話はその事故とは直接関係ありません。Railsだったとしても恐らく使ってないか変な使い方してると思うんですが、理由は後述) 何故こんなことが起きるのか そもそも、フロント側に何故IPアドレスを送ってんだ、という話です

      パーフェクトRails著者が解説するdeviseの現代的なユーザー認証のモデル構成について - joker1007’s diary
    • Smart UI パターンが再評価される世界 - id:onk のはてなブログ

      設計ナイト2020 を受けて、今どんなアーキテクチャを選ぶべきかという話をしたくなったのだ。 kichijojipm.connpass.com 設計ナイトで高ぶった結果1時間コースの発表資料が完成したので供養場所を探しています。聞いてくれ!!!— Takafumi ONAKA (@onk) 2020年11月1日 お前誰よ 2000年代前半に SI 2000年代後半にブログ、SNS 2010年代にソーシャルゲーム 2020年代に UGC サービス をやってきた人間。数百万〜数億行のデータ、月間数千万〜数十億 imp 程度を主戦場にしています。 今日の話 DDD と PofEAA から学ぶパターン/アンチパターン Rails によって発見された、密結合で速く走れるソフトウェア 今求められているアーキテクチャ 昂ぶって 15,000 字ぐらい書いてしまった。 DDD と PofEAA から学ぶパ

        Smart UI パターンが再評価される世界 - id:onk のはてなブログ
      • データベースの値をちょっとだけ書き換えたら検索に数十分かかる様になって障害になった裏話 - STORES Product Blog

        はじめに 2024年1月にリテール(ネットショップ・レジ)部門からサービス(予約)部門に異動になった @ucks です。 異動してからはスマートリストという機能の開発を行っていて、5月6日に無事リリースできたのと、開発途中で障害に至ってしまった部分があるので、裏側を少し紹介しようかなと思います。 はじめに スマートリストとは スマートリストの設計 検索の仕様変更 高負荷時のハンドリング そして障害へ 見逃した点 DBの実行計画確認時の見逃し 動作確認時の漏れ 監視先の漏れ ログの損失 おわりに スマートリストとは スマートリストの開発についての話を行う前に、まずはスマートリストについて簡単に説明しておきます。 スマートリストとは、特定の条件の顧客をラベリングする機能です。 早い話、最終予約日がいつ、予約回数が何回以上等の顧客の検索条件を保存しておいて、閲覧時にラベリングして、視認しやすくし

          データベースの値をちょっとだけ書き換えたら検索に数十分かかる様になって障害になった裏話 - STORES Product Blog
        • Active Recordから考える次の10年を見据えた技術選定 / Architecture decision for the next 10 years at PIXTA

          September 15, 2021 @ iCARE Dev Meetup #25

            Active Recordから考える次の10年を見据えた技術選定 / Architecture decision for the next 10 years at PIXTA
          • Railsで考えるドメイン駆動設計のコアドメイン

            銀座Rails#26の登壇資料です https://ginza-rails.connpass.com/event/189892/

              Railsで考えるドメイン駆動設計のコアドメイン
            • Active Recordから考える次世代のRuby on Railsの方向性 / Directions for the next generation of Ruby on Rails: From the viewpoint of its Active Record

              January 29, 2021 @ 銀座Rails #29

                Active Recordから考える次世代のRuby on Railsの方向性 / Directions for the next generation of Ruby on Rails: From the viewpoint of its Active Record
              • オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank

                こんにちは。MySQLは秋の季語とする一派が世に存在していることを知り、私もMySQLに関わる記事を書いてみようと筆を取ることにしました。 さて、リレーショナルデータベースをバックエンドとするWebアプリケーション開発において、特定の条件に合致するレコードがN件だけ存在するかどうかを確認するロジックは頻出といえます。プログラマとして一度は書いたことがあるのではないでしょうか? この記事ではそのような件数カウントを行うためのクエリが引き起こした性能劣化と、その改善アプローチについて紹介していきます。 なお、本記事の内容はMySQLを前提としており、アプリケーションコードの例はRuby on Railsを用いますが特別な前提知識は必要ありません。コードの雰囲気だけ感じ取っていただければと思います。 ありがちなコード if query.count == n の問題 冒頭で述べた通り、特定の条件に

                  オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
                • Active Recordともっと仲良くなって自然に優しいコードを書くぞ - SmartHR Tech Blog

                  こんにちは。SmartHRでRails顧問業をしています @willnetです。最近は主にリファクタリングをしています。 SmartHRのバックエンドは基本的にRubyで書かれています。しかし入社してくるバックエンドエンジニアは必ずしもRubyやRailsを長年使ってきた人だけではなく、前職では他言語を使っていてRuby(Rails)はほとんど使ったことがないという人もいます。 webアプリケーションを作る、という点ではどの言語でも抑えるべき点は同じですが、RubyやRailsに特化した考え方や書き方もありますよね。SmartHRではそれを効率よく習得してもらうために読書会を開催したり、社内のドキュメントツールに知見を書いて共有したりしています。 僕も社内のドキュメントツールにActive Recordの付き合い方ついて書いたところ、評判が良く「テックブログにしたら?」と言われたので今回一

                    Active Recordともっと仲良くなって自然に優しいコードを書くぞ - SmartHR Tech Blog
                  • DB外の副作用をトランザクションから分離しよう / Isolate out-of-DB side effects from transactions

                    gotanda.rb#52@オンライン "DB外の副作用をトランザクションから分離しよう"

                      DB外の副作用をトランザクションから分離しよう / Isolate out-of-DB side effects from transactions
                    • Railsのモデル名をすべて変更した話 - SmartHR Tech Blog

                      SmartHRでは開発にRuby on Railsを広く採用しています。 今日は負債解消のために、開発しているサービスでRailsのモデル名をすべて変更した話を紹介します。 既存のモデル構造のつらみ 私達が開発しているサービスでは、モデルの親子構造が分かりやすいということで、モデルをネストした構造にしていました。 例えば、 User に紐づくプロフィール画像 User::ProfileImage は、 app/models/user/profile_image.rb に配置する具合です。 パッと見の構造が分かりやすいのですが、時が経つにつれて次のようなつらさが顕在化してきました。 Railsの規約(推奨ルールのようなもの)に則っていないので、関連定義が冗長になる テーブル名が長くなる。 外部キーや関連名が長くなる。 関連名と外部キー名が一致せず、カラムを呼び出したいときにDB定義を見ないと

                        Railsのモデル名をすべて変更した話 - SmartHR Tech Blog
                      • 動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記

                        注:誤解されないように最初にこの記事の意図を書いておくと、古典的な静的型付き言語VS.動的型付き言語の論争をするつもりはありません。これまで色々なプロジェクトを観察(風聞も含む)して来たところ、そういう傾向があるのではないかという仮説です。それと、文脈として主にWebアプリケーション開発する時のことを想定しており、それ以外のケースはいったん脇に置いています。WebアプリケーションだとPHP(動的型付き言語)の方が圧倒的に事例多いのではという感想もありそうですが、その辺りを考え出すと話がこんがらがるので、これもいったん脇においています。 たとえば、色々な事例を見聞きするに、スタートアップ企業において動的型付き言語であるRubyのWebアプリケーションフレームワークであるRuby on Rails(RoR)は好まれる傾向にあります。近年のPythonの動向はさておき、未だにRoRの求人がかなり

                          動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記
                        • 8年以上開発されているRailsプロダクトーーfreee会計をRails 6にするまで - freee Developers Hub

                          こんにちは、freee会計でエンジニアをしている @sakakibara-setu です。 普段は債権債務に関する機能を担当するチームに所属して開発を行っていますが、この度freee会計のRailsアップデートを担当することになりました。 実はfreee会計は、先日2021年12月にRails 5系からRails 6系へとメジャーアップデートされました。 ありがたいことにこのメジャーアップデートによる問題は一件も発生しなかったため、皆様には特にお変わりなくご利用いただけたかと思います。 その上で社内の開発環境においては様々な恩恵を得ることができたので、結果は成功と言っていいと思います。 しかしながら、その道のりはお世辞にもうまくいったことばかりではなく、反省すべきことも多々ありました。 アップデート作業には壁とも言えるような問題がいくつもありましたが、それはfreee会計が8年以上開発され

                            8年以上開発されているRailsプロダクトーーfreee会計をRails 6にするまで - freee Developers Hub
                          • EmbulkでPostgreSQLをMySQLに移行した話 - LIVESENSE ENGINEER BLOG

                            こんにちは。マッハバイトを運営するアルバイト事業部エンジニアの mnmandahalf です。 先日、マッハバイトの販売管理システムで使っているデータベースをオンプレPostgreSQLからAmazon Aurora MySQLに移行しました。 本記事では移行に至った背景、吸収する必要があった差分や苦労した点についてお話しします。 環境 移行前のバージョン: PostgreSQL 9.4 ※ドキュメントはバージョン14のものを添付しています 移行後のバージョン: Aurora MySQL 3.02.0 (compatible with MySQL 8.0.23) 環境 MySQL移行の背景 データ移行方法の検討 Embulkの実行で考慮したポイント Embulkの設定 scram-sha-256認証への対応 タイムスタンプが9時間巻き戻る FK制約を無効化できない PostgreSQLとM

                              EmbulkでPostgreSQLをMySQLに移行した話 - LIVESENSE ENGINEER BLOG
                            • やさしいActiveRecordのDB接続のしくみ

                              https://kaigionrails.org/2023/talks/kubo/

                                やさしいActiveRecordのDB接続のしくみ
                              • RedwoodJS を Ruby on Rails と比較してみる

                                RedwoodJS RedwoodJS は JavaScript/TypeScript で構築されたフルスタック Web アプリケーションフレームワークです。RedwoodJS プロジェクト自体は Tom Preston-Werner 氏 (GitHub 創設者であり Gravatar や Jekyll などの作成者) が中心となり始まりました。 私自身もつい最近になって同じ職場の @sakitoさんに存在を教えてもらったばかりです。 RedwoodJS は、READMEから抜粋するだけでも、次のような機能を持ちます。 フォーマット・ディレクトリ・ビルドなどに関するデフォルト構成 単一ファイルによるルーティング定義 GraphQL Client / API (with Serverless deploy) の構築 ページ・レイアウトなどのジェネレータ CRUD 操作に特化した Scaffo

                                  RedwoodJS を Ruby on Rails と比較してみる
                                • Blitz.jsをRuby on Railsエンジニアが触ってみた感想

                                  感想です。 何をしたか 現状でBlitz.jsで本番サービスを運用できるかの調査。 Railsで運用している本番サービスの一部機能を、3日間ほどかけて移行を試してみた。 結論 (Railsの主戦場でもある)新規事業開発の文脈でのクイックな立ち上げを想定するなら、本番運用するにはまだ厳しい。 特に、RailsユーザーとしてはActiveRecordがないのが厳しい。 開発効率そのものはRailsと比べて多少落としても、Railsよりもスケーラブルで型安全に開発したいなら、割と良い選択肢に思う。 もろもろ可能性は感じるので、引き続き応援していきたい。 良かった点(=Blitz.jsに興味を持っている理由) 型安全な開発 サーバーもフロントも全てが型に守られた開発、そしてIDEの恩恵を受けられるのは、いうまでもなく心地がいい。 型は補助輪のようなものなので、ユーザースキルが高ければ必須ではないく

                                    Blitz.jsをRuby on Railsエンジニアが触ってみた感想
                                  • 妄想的DHH理解2:概念的距離の圧縮 - Qiita

                                    Caution この記事はDHHファンの妄想によるシナリオが多分に含まれます。 というかほとんどです。 成り立ちや考え方が間違ってることも当然あるように思うので話半分で読んでください。 これは一体 前回かいた妄想的DHH理解のエピソード0的な話です。 妄想的DHH理解では、DHHがどういう過程で今のRailsフロントエンドに達したかの話が主題でしたが、そこでは「なぜ〜を選ばなかったか」は説明されていませんでした。 彼はモノリシックを愛したり、トレンドと真逆のアプローチでフロントエンドに新しいレールを引き始めたりするので、単に彼が天邪鬼であったり車輪の再発明大好きおじさんとして捉えられがちですが、実は太い太い一本筋をもった技術選定をし続けてるってことが広まればいいなと思ってるファンの記事です。 前提知識 前回とほぼ同じです。 Railsの生みの親、Rubyist。 実はカーレーサーでもありま

                                      妄想的DHH理解2:概念的距離の圧縮 - Qiita
                                    • 赤いラクダは3倍早い!ピーク時毎分1400件を捌くための決済処理のチューニング紹介 - pixiv inside

                                      こんにちは、4月からBOOTH部になったorekyuuです。 この記事では、転属後の一番大きな成果である、BOOTHで発生する大量の注文(ピーク毎分約1400件)を整合性を取りつつ高速にさばく改善について解説します。 BOOTHが抱えていた課題 まずはBOOTHが抱えていた課題について説明します。 BOOTHでは販売開始時刻が事前に予告されていた場合などの理由で瞬間的に決済が集中し、サーバーが大量の注文に耐えきれないケースが度々ありました。 その原因は在庫の処理にありました。擬似コードですが、注文の処理は以下のようになっていました。 def checkout! ActiveRecord::Base.transaction do 商品の悲観的ロック # 在庫数を同時に編集しないようにロックを取る 商品の在庫の減算処理 注文を確定済みにする 決済の請求APIを叩く end end 上記のコード

                                        赤いラクダは3倍早い!ピーク時毎分1400件を捌くための決済処理のチューニング紹介 - pixiv inside
                                      • 巨大レガシーシステムの戦略評価とリファクタリングにおけるDDDの活用事例

                                        こちらのイベントで発表した資料です。 『ドメイン駆動設計を導入するためにやったこと』 https://modeling-how-to-learn.connpass.com/event/229811/

                                          巨大レガシーシステムの戦略評価とリファクタリングにおけるDDDの活用事例
                                        • Rails 6.1で `created_at > ?` みたいなクエリをいい感じに生成する - かみぽわーる

                                          Rails 6.1の目玉機能として以下のように書けるwhere拡張を入れてたんですが、いろいろあって6.1からはrevertされてしまいました🥲 posts = Post.order(:id) posts.where("id >": 9).pluck(:id) # => [10, 11] posts.where("id >=": 9).pluck(:id) # => [9, 10, 11] posts.where("id <": 3).pluck(:id) # => [1, 2] posts.where("id <=": 3).pluck(:id) # => [1, 2, 3] github.com github.com なんですが、そんなことで引き下がる僕ではないので、6.1ではpredicate生成に干渉できる拡張ポイントを用意しており、以下のようなコードを適当に読み込まれるところに

                                            Rails 6.1で `created_at > ?` みたいなクエリをいい感じに生成する - かみぽわーる
                                          • 大規模分散DBのCloud Spannerが、RailsのActive Recordに対応。スケーラブルで高可用なRubyアプリケーションの開発が容易に

                                            Googleは、同社がクラウドサービスとして提供しているCloud SpannerをRailsのActive Recordに対応させるアダプタ「activerecord-spanner-adapter」が正式版となったことを発表しました。 Cloud Spannerは、Googleの多数のデータセンターにまたがる地球規模で大規模分散処理を行うリレーショナルデータベースです。事実上無制限とされる高いスケーラビリティと99.999%の高可用性を備えつつ、強い一貫性とトランザクション処理、SQLによるクエリなどを実装しています。 メルカリの決済サービスであるメルペイがバックエンドデータベースにCloud Spannerを採用し、数百万ユーザーの処理を行っているとされています。 このCloud SpannerをRailsのActive Recordのバックエンドデータベースとして使えるようにするア

                                              大規模分散DBのCloud Spannerが、RailsのActive Recordに対応。スケーラブルで高可用なRubyアプリケーションの開発が容易に
                                            • Railsアプリケーションを遅くする、ActiveRecordの3つの間違い:Count,Where,Present | Scout APM Blog

                                              ネイト・ベルコペック (@nateberkopec)  SpeedShop(詳細),Railsパフォーマンス・コンサルタンシー 要約:Rails開発者の多くが、ActiveRecordがSQLクエリを実際に実行する条件を理解していません。よくある3つのケースを見てみましょう:countメソッドの誤使用と、サブセットをセレクトするためのwhereの使用、そしてpresent?です。 断言しましょう。あなたはこの3つのメソッドを使い過ぎていて、無駄なQueryとN+1を発生させているでしょう。 (字幕:なんて奇妙な謎だ、バットマン!) "いつActiveRecordがクエリを実行するかって?知るか!" ActiveRecordは素晴らしいです。本当に。しかし抽象化されているので、データ・ベース上で実行されている実際のSQLクエリに無頓着になりがちです。ActiveRecordがどのように動作す

                                                Railsアプリケーションを遅くする、ActiveRecordの3つの間違い:Count,Where,Present | Scout APM Blog
                                              • ActiveRecordの力でDBのメタデータを迅速に解析する

                                                "ActiveRecordの力でDBのメタデータを迅速に解析する" Reject on Rails 2024 での登壇資料です。 https://gotanda-rb.connpass.com/event/330965/ 実装したgemはこちら https://github.com/ln…

                                                  ActiveRecordの力でDBのメタデータを迅速に解析する
                                                • ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog

                                                  注意喚起の記事になります。タイトルが結論です。 既にこの問題に言及している記事はいくつかあるのですが*1、私は気付かずに踏んでしまったので、タイトルで「おっと、うちは大丈夫かな」と思ってもらえるようにこの記事を書いています。 joinableとは何か 問題として挙げているjoinableオプションですが、これはネストしたトランザクションの挙動に影響を与えます。少しややこしいので、サンプルコードを見せながら説明します。 # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem "activerecord", "7.

                                                    ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog
                                                  • Rails6〜7で追加された便利メソッド12選

                                                    はじめに こんにちは。 mybest でBackendエンジニアをしている rince です。 現在、弊社ではRails6.1から7.0へのアップグレードを進めています。 → 2023/3/2にRails7.0にアップグレード完了しました! アップグレードを進める中で新たに追加された便利なメソッドを使用する機会があったので、今回はそんなRailsの最新便利メソッドをまとめました。 また、Rails7.0だけでなく、6.0や6.1で追加されたメソッドの中にもまだ割と知られていない便利なメソッドがあったりするので、それらについても合わせてご紹介します。 よりシンプルにわかりやすくコードを書けるメソッドがたくさん追加されていますので、ぜひ読んでみていただいて、皆さんの開発の手助けになれば嬉しいです。 ActiveRecord destroy_by / delete_by (6.0〜) 特定条件の

                                                      Rails6〜7で追加された便利メソッド12選
                                                    • ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った

                                                      それなりの規模のサービスを運用していると、不可解なエラーに遭遇することはよくあるものです。その中でもデータベース関連のエラーは一見難解な問題に見えるかもしれませんが、原因調査に役立つ情報をさえ出力すればたいていの場合は容易に原因を特定できるものです。というわけで、Rails でよく遭遇するエラーの調査に役立つ情報を出力する gem を作成しました。 activerecord-debug_errors 現在次のエラーをサポートしています。 ActiveRecord::LockWaitTimeout (MySQL のみ) ActiveRecord::Deadlocked (MySQL のみ) ActiveRecord::ConnectionTimeoutError 以下、具体的な例を用いてどのような情報が表示されるか説明します。 ActiveRecord::LockWaitTimeout Ac

                                                        ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った
                                                      • strong_migrations gemのススメ - Money Forward Developers Blog

                                                        こんにちは。会計Plusでエンジニアをしているぽっけです。最近はシャケをしばくバイトで、やっとでんせつに上がりました。 今日はstrong_migrationsというRails向けのgemを紹介します。 strong_migrationsとは https://github.com/ankane/strong_migrations strong_migrationsは、危険なmigrationを検出するgemです。 データベースのmigrationは、ときに危険になります。たとえば実行するDDLによってはデータベースへの書き込みをブロックしてしまうことがあります。またテーブル定義の変更は、うまくやらないとアプリケーションが意図せぬ動作をするかも知れません。 strong_migrationsはそのような危険なmigrationを検出します。 ⁠使い方 使い方はかんたんです。strong_mi

                                                          strong_migrations gemのススメ - Money Forward Developers Blog
                                                        • activerecord-originator をリリースしました - pockestrap

                                                          こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見るのが早いでしょう。次のログはArticlesController#indexで実行されるクエリの例です。 Article Load (0.1ms) SELECT "articles".* FROM "articles" WHERE "articles"."status" = ? /* app/models/article.rb:3:in `published' */ AND "articles"."category_id" = ? /* app/controllers/artic

                                                            activerecord-originator をリリースしました - pockestrap
                                                          • Rails: Active Recordメソッドのパフォーマンス改善とN+1問題の克服(翻訳)|TechRacho by BPS株式会社

                                                            概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Improving Database performance and overcoming common N+1 issues in Active Record using includes, preload, eager_load, pluck, select, exists? – Saeloun Blog 原文公開日: 2020/01/08 著者: Rohit Kumar サイト: Saeloun -- Ruby on Railsのコンサルティング会社で、Rails + React開発のほかに、React Nativeによるモバイルアプリ開発も手がけています。 日本語タイトルは内容に即したものにしました。 2020/03/11: 初版公開 2023/09/27: 更新 Railsアプリケーションのパフォーマンスは多くの変数に

                                                              Rails: Active Recordメソッドのパフォーマンス改善とN+1問題の克服(翻訳)|TechRacho by BPS株式会社
                                                            • 逸脱事例を含めてすべてをレールに乗せる - fsubal

                                                              ソフトウェア #設計 のそれもかなり抽象的な話。 ライブラリやフレームワークの価値として、一定の制約を設けて典型事例をそのレールに乗せるというのがあると思う。それは書き方のルールであったり、あるいは受け取る値を型で制限することだったりする。 一方、現実のソフトウェアではたとえそういうフレームワークを使っていたとしても、時に逸脱する実装を取らなければいけないことがある。その時、フレームワークはその逸脱事例を 公式の方法として 書けるようにすべきかという問題が生じる。 たとえば最近 Tailwind.css は @tailwindcss/jit で、任意の値をクラス内に書ける記法をサポートしつつある。 https://github.com/tailwindlabs/tailwindcss-jit code:html <img class="absolute w-762px h-918px to

                                                                逸脱事例を含めてすべてをレールに乗せる - fsubal
                                                              • やりすぎないドメイン駆動設計 on Rails - マイペースなRailsおじさん

                                                                ドメイン駆動設計(DDD)では、Springのようにドメインをほかの関心事(データソース、プレゼンテーション)から分離したフレームワークが用いられることが多です。一方で、Ruby on Railsは、ドメインとデータソース層が密に結合しており、DDDには向いていないと考えられています。 Railsでドメイン駆動設計をする大変さ それでも、アーキテクチャに手を加えることで、Railsでもドメイン駆動設計を行った事例が公開されています。以下の取り組みでは、Railsの提供するActive RecordをDAOとして利用してドメインを分離することで、ドメインを切り出しやすくしています。 ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! - Qiita Railsにおけるドメイン駆動設計の実践 · Linyclar Railsでドメイン駆動設計を行う上での課

                                                                  やりすぎないドメイン駆動設計 on Rails - マイペースなRailsおじさん
                                                                • 久々に sinatra app を作った - id:onk のはてなブログ

                                                                  「いつもの」が結構ありそうなので書いておく。 app.rb ペラ 1 でツラくなったときの対策はだいたい sonots パイセンの ちっちゃくはじめておっきく育てる sinatra アプリの作り方 に書いてあって、これは今でも有効なので読んでおくと良いです。 ディレクトリ構成 REPO ├── app.rb ├── bin/ ├── config/ │ ├── database.yml │ ├── initializers/ │ └── locales/ ├── config.ru ├── Gemfile ├── Gemfile.lock ├── helpers/ ├── models/ ├── public/ └── views/ sinatra らしさをなるべく残してある 例えば config/boot.rb を用意するかは非常に悩んだのだけれど、起点は app.rb であって欲しい

                                                                    久々に sinatra app を作った - id:onk のはてなブログ
                                                                  • ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)

                                                                    Vueで Webコンポーネントを作って Reactで使う / 20241030-cloudsign-vuefes_after_night

                                                                      ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)
                                                                    • ツイッターで見つけて直したActiveRecordの問題3つ - かみぽわーる

                                                                      Rails Advent Calendar 2020の3日目です。 時間がないのでとりいそぎ3つだけ。 enum state: {active: 0, inactive: 1}とかした時に、typecast前の0とか1を取りたい ActiveRecord::Enumってstate: {active: 0, inactive: 1}とかした時に、typecast前の0とか1を取る場合、read_attribute_before_type_castを使うしかないのか?— アルフォートおじさん (@joker1007) October 21, 2020 github.com belongs_to :author, class_name: 'User'したときにleft_joins(:author).where("author.id": nil)とか書きたい これすると、joins(:author

                                                                        ツイッターで見つけて直したActiveRecordの問題3つ - かみぽわーる
                                                                      • STIとautoloadingとRails 7 - Money Forward Developers Blog

                                                                        こんにちは。マネーフォワード クラウド会計Plus (以下会計Plus)でエンジニアをしているぽっけです。 しばらく前に、会計PlusのRails 7へのアップグレードが完了しました。その中では様々な対応を行いましたが、この記事では特に印象的だったSTIとautoloadingの対応についてご紹介しようと思います。 STIとautoloadingは相性が悪いです。Rails 7以前は簡単な修正でこれらが共存して動いていましたが、Rails 7ではそのコードが動かなくなってしまいました。この問題は最終的には修正されましたが、それまでに紆余曲折あり修正までに何回ものPull Requestが必要になりました。 ⁠対象読者 Ruby on Railsを使用した開発経験があることを前提としています。また、STIやautoloadingについて詳細な説明はしません。それらを知らない場合は、該当するR

                                                                          STIとautoloadingとRails 7 - Money Forward Developers Blog
                                                                        • Rails: 本当にやった「責務過剰クラス」の事例(翻訳)|TechRacho by BPS株式会社

                                                                          概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: When objects become super objects - Write it simple 原文公開日: 2020/08/11 著者: Juan Manuel Ramallo サイト: Write it simple - Simple programming short articles. Mostly ruby focused. 日本語タイトルは内容に即したものにしました。 鉛筆は、何かものを書くのに使います。それ以上のものではありません(お尻に消しゴムが付いている鉛筆もありますが、この際考えないことにしましょう)。 今は何でもデジタルに移行する時代ですよね。鉛筆本体に簡単なOCRスキャナを取り付けて、書いたものが片っ端からデジタル化できたらさぞ便利でしょう。 私は会議で意見を交換中、手元で書いたちょっとした技術用の

                                                                            Rails: 本当にやった「責務過剰クラス」の事例(翻訳)|TechRacho by BPS株式会社
                                                                          • Rails 7で導入される invert_where メソッドが危険そうだったので調べた - pockestrap

                                                                            この記事は現時点(2021-04-28)のrails/railsのmainブランチの最新のコミットでテストしています。 TL;DR invert_whereはすべてのwhereをinvertする 使い方によっては意図しない条件をinvertして危険 invert_whereとは invert_whereは、Rails 7でActiveRecord::Relationに追加される予定のメソッドです。 このメソッドは、relationにチェーンして呼び出すことで、それまでのwhereの条件を反転できます。 つまり次のようになります。(CHANGELOGから引用) class User scope :active, -> { where(accepted: true, locked: false) } end User.active # ... WHERE `accepted` = 1 AND

                                                                              Rails 7で導入される invert_where メソッドが危険そうだったので調べた - pockestrap
                                                                            • Rails で大量のレコードを並列処理する - ボクココ

                                                                              ども、@kimihom です。 今回、大量のレコードを一つずつ処理する実装をしたので、その実装方法をまとめておく。 コードの大枠 以下は全ユーザー(User)に紐づいているレコード(Record) に対して処理をするコードとなっている。 User.all.order("id").each do |u| r_all = u.records r_all.find_in_batches do |records| Parallel.each(records, in_threads: 50) do |r| begin # 処理 ActiveRecord::Base.connection_pool.with_connection do # ActiveRecord を使った処理 end rescue => e puts "err #{e}" end end end r_all = nil end fi

                                                                                Rails で大量のレコードを並列処理する - ボクココ
                                                                              • Active RecordでRow Level Securityを使って安全にテナント間のデータを分離する - SmartHR Tech Blog

                                                                                従業員データベース機能の開発を担当している渡邉です。最近公開したGemであるactiverecord-tenant-level-securityの紹介をします。 SmartHRにおけるマルチテナントの現在 私たちが開発するSmartHRはお客様ごとに1つの環境を提供する、マルチテナント型SaaSです。サービス全体で1つのデータベースを持ち、複数のテナントのデータが混ざらないように、SQLで問い合わせを行います。 1つの環境ごとに1つのデータベースを持つ方式は安全性の面で優れていますが、スキーマの保守やマイグレーションにかかる時間の増加など、多くの技術的な困難をもたらします。この選択の背景については、2018年に書かれた以下の記事もご覧ください。 tech.smarthr.jp とはいえ、常にテナントごとのWHERE句を意識しながらコードを書くのは大変ですし、不具合の温床になります。幸い、私

                                                                                  Active RecordでRow Level Securityを使って安全にテナント間のデータを分離する - SmartHR Tech Blog
                                                                                • SpringOnion: Railsの遅そうなEXPLAINをログ出力するgem - so what

                                                                                  SpringOnionというRailsの遅そうなEXPLAINをログ出力するgemを作りました。 github.com 某kamopoさんのMySQLCasualLog.pmの移植?です。 cf. ふつうのWeb開発者のためのクエリチューニング 以前の移植とは異なって、Arproxyを必要とせず、単体で動きます。 何年前の話だよといわれそうですが、未だにスロークエリと戦っていたりするので… Rails 3以前に搭載されていた、遅かったクエリを自動的にEXPLAINする機能とは異なり、フィルタで選別されたすべてのクエリに対してEXPLAINを実行し、まずそうなキーワードが出現したらログに出力します。 また、EXPLAINの実行先は開発用のDBだけでなく任意のDBに向けられます(例: ステージング環境のDBなど)。 使い方 GemfileにSpringOnionを追加して group :dev

                                                                                    SpringOnion: Railsの遅そうなEXPLAINをログ出力するgem - so what

                                                                                  新着記事