並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 152件

新着順 人気順

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

  • そろそろ理解する includes / Understanding includes

    RubyKaigi 2024 直前LT祭の発表スライドです。 https://timeedev.connpass.com/event/315946/ スライド内の includes クイズを手元で動かすためのスクリプト: https://gist.github.com/euglena1215/fb6cd1235278491dc206b9bd6feaf71e

      そろそろ理解する includes / Understanding includes
    • Let's get started with Ruby && Rails Tips

      【オフライン開催】Omotesando.rb #96 https://omotesandorb.connpass.com/event/313860/

        Let's get started with Ruby && Rails Tips
      • 『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか

        2024/04/24(Wed)に行われたGotanda.rb#58の登壇資料です。 https://gotanda-rb.connpass.com/event/315058/ 『Railsオワコン』と言われる時代に、なぜブルーモ証券はテックスタックの1つとしてRailsを選んだのかの解説資料です。

          『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
        • 14 tools and gems every Ruby developer would love

            14 tools and gems every Ruby developer would love
          • 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
            • 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
              • Rails: Active RecordでRepositoryパターンを実装する(翻訳)|TechRacho by BPS株式会社

                概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Repository implementation on ActiveRecord | Arkency Blog 原文公開日: 2023/12/28 原著者: Paweł Pacana Repositoryは本質的に、ドメインオブジェクトをその永続化方法から切り離して、それらにアクセスするための限定的なインターフェイスを提供します。Repositoryは戦術的なパターンの一種であり、本記事の導入部で私が説明したい内容よりずっと詳しくMartin FowlerやEric Evansが解説しています。Repositoryパターンが推し進めるものは、いわゆるActive Recordパターンと真逆です。なぜパターンをわざわざ別のものに変換するのでしょうか? Active Recordパターンは両刃の剣であり、その問題はまさに最大の長所

                  Rails: Active RecordでRepositoryパターンを実装する(翻訳)|TechRacho by BPS株式会社
                • has_manyにブロック引数を渡してリレーションを拡張する|TechRacho by BPS株式会社

                  今日はhas_manyのブロック引数に関して取り上げます。 以下のモデルを想定します。 # attributes # # name: 氏名 # attendance_count: 出席回数 class Student < ApplicationRecord has_many :exams end # attributes # # student_id: 学生ID # subject: 教科 # period: テスト実施回 # score: 得点 class Exam < ApplicationRecord belongs_to :student end スコープブロック has_many のブロックと聞くとまずスコープブロックが思いつくと思います。 今回のテーマのブロック引数とは異なりますが、先にスコープブロックに関して触れていきます。 スコープブロックは has_many の第2引数に

                    has_manyにブロック引数を渡してリレーションを拡張する|TechRacho by BPS株式会社
                  • やさしいActiveRecordのDB接続のしくみ

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

                      やさしいActiveRecordのDB接続のしくみ
                    • GitHub - instant-dev/instant: JavaScript API framework with ORM, migrations and vectors

                      instant.dev provides a fast, reliable and battle-tested ORM and migration management system for Postgres 13+ built in JavaScript. For those familiar with Ruby on Rails, instant.dev adds functionality similar to ActiveRecord to the Node.js, Deno and Bun ecosystems. We have been using it since 2016 in production at Autocode where it has managed over 1 billion records in a 4TB AWS Aurora Postgres ins

                        GitHub - instant-dev/instant: JavaScript API framework with ORM, migrations and vectors
                      • Active Recordで関連先を保存するときに気をつけること - おもしろwebサービス開発日記

                        先日、仕事でRails(Active Record)の難しい仕様に遭遇したので共有するためにエントリをしたためました。似たようなケースに遭遇した人の手助けになれば幸いです(\( ⁰⊖⁰)/) 対応Railsバージョンと設定 Rails6.1以上 config.active_record.has_many_inversing = true(Rails6.1のデフォルト設定)である 問題1 まず次のコードを読んでみてください。 class User < ApplicationRecord has_many :posts end class Post < ApplicationRecord belongs_to :user, inverse_of: :posts # (1) before_update { puts 'before_update' } end user = User.new po

                          Active Recordで関連先を保存するときに気をつけること - おもしろwebサービス開発日記
                        • Railsガイドにきちんと目を通して新しい知識を得る - Active Recordの関連付け編 - - PLAY BALL

                          ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Active Recordの関連付けの章です。 railsguides.jp reload_xxxと、changerd?previously_changed? リンクはこちら reload_xxx テストを書くときに、xxx.reloadみたいな使い方はよくしていましたが、関連モデルに使えるのは知りませんでした。 # (コンソールAで) book.user #=> #<User id: 1, email: "sample@example.com", created_at: ...> # (別のコンソールBで) User.find(1).update(email: 'sample02@e

                            Railsガイドにきちんと目を通して新しい知識を得る - Active Recordの関連付け編 - - PLAY BALL
                          • Railsのモデル名をすべて変更した話 - SmartHR Tech Blog

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

                              Railsのモデル名をすべて変更した話 - SmartHR Tech Blog
                            • Rails: Active Record属性のデフォルト値はコールバックよりもdefaultオプションで設定しよう(翻訳)|TechRacho by BPS株式会社

                              概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Assign a default value to an attribute in Active Record - Andy Croll 原文公開日: 2023/03/13 原著者: Andy Croll 日本語タイトルは内容に即したものにしました。 以下のAPIドキュメントもどうぞ。 Rails: ActiveRecord標準のattributes APIドキュメント(翻訳) Active Recordモデルのインスタンスにデフォルト値を設定する必要が生じたことのある人は、おそらくコールバックでデフォルト値を設定したことがあるでしょう。 実はRails 5.0からもっとよい方法があるのですが、最近まで気づいていませんでした(Mosesに感謝します!) 参考: §2.3 Active Record属性API -- Ruby on

                                Rails: Active Record属性のデフォルト値はコールバックよりもdefaultオプションで設定しよう(翻訳)|TechRacho by BPS株式会社
                              • Rails: Active Recordのfindで怖い思いをした話(翻訳)|TechRacho by BPS株式会社

                                概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: A scary side of ActiveRecord's find | Arkency Blog 原文公開日: 2019/03/19 原著者: Jakub Kosiński サイト: Arkency Blog 日本語タイトルは内容に即したものにしました。 参考: Rails API find -- ActiveRecord::FinderMethods 参考: Object#tap (Ruby 3.2 リファレンスマニュアル) 私は最近プロジェクトでこんなリファクタリングを行いました。identityに束縛されたコンテキストにドメインイベントをさらに追加することで、システム内のidentityに対して実行された特定のアクションから取得する監査ログを改善するというものです。手始めに、コマンドを消費する責務を持つServiceを

                                  Rails: Active Recordのfindで怖い思いをした話(翻訳)|TechRacho by BPS株式会社
                                • Rails 7.1: ActiveRecord::Baseにnormalizesが追加された(翻訳)|TechRacho by BPS株式会社

                                  2023.06.06 Rails 7.1: ActiveRecord::Baseにnormalizesが追加された(翻訳) Rails 7.1: ActiveRecord::Baseにnormalizesが追加された(翻訳) Rails 7.1で、Active Recordの属性値の正規化(normalization)を宣言するメソッドが新たに追加されました。これは、ユーザー入力のサニタイズ、書式の統一、外部由来のデータのクリーンアップで特に有用です。 Rails 7.1より前は、以下のようにbefore_saveコールバックで属性を正規化できます。 model User < ApplicationRecord before_save :downcase_email, if :email_present? private def email_present? email.present?

                                    Rails 7.1: ActiveRecord::Baseにnormalizesが追加された(翻訳)|TechRacho by BPS株式会社
                                  • Pitfalls of Rails db transactions

                                    Rollback Rails transaction and rescue error to display it good: This is fine record = MyModel.last error_for_user = nil begin ActiveRecord::Base.transaction do # ... record.save! end rescue ActiveRecord::RecordInvalid => e # do something with exception here error_for_user = "Sorry your transaction failed. Reason: #{e}" end puts error_for_user || "Success" source, source2, source3 This is ok as wel

                                    • Rails: Active Recordモデルのカラムを安全に削除する(翻訳)|TechRacho by BPS株式会社

                                      概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Safely Remove a Column from an Active Record Model - Andy Croll 原文公開日: 2022/11/14 著者: Andy Croll 参考: Rails API ignored_columns= -- ActiveRecord::ModelSchema::ClassMethods 既存のActive Recordモデルに新しいカラムを追加してデプロイするのは、多くの場合問題なくできます。通常は、最初のデプロイでマイグレーションを実行し、それが終わってから、次にデータベースに追加されたカラムを利用する新しいコードをリリースするという手順になります。 しかし、カラムを削除する場合は問題が起きやすい傾向があります。Railsアプリケーションを起動すると、Active Reco

                                        Rails: Active Recordモデルのカラムを安全に削除する(翻訳)|TechRacho by BPS株式会社
                                      • DB外の副作用をトランザクションから分離しよう / Isolate out-of-DB side effects from transactions

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

                                          DB外の副作用をトランザクションから分離しよう / Isolate out-of-DB side effects from transactions
                                        • Rails: 私の好きなコード(5)永続化とロジックを絶妙にブレンドするActive Record(翻訳)|TechRacho by BPS株式会社

                                          概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Code I like (V): Active Record, nice and blended 原文公開日: 2022/12/19 原著者: Jorge Manrubia -- 37signalsのエンジニアです 日本語タイトルは内容に即したものにしました。なお、以下の『素のRailsは十分に豊かである(翻訳)』記事は『私の好きなコード』シリーズの(4)に含まれました。 素のRailsは十分に豊かである(翻訳) 本記事は37signals dev blogで最初に公開されました リレーショナルデータベース内でのオブジェクトの永続化は、複雑な問題です。かれこれ20年ほど前、この問題は究極の直交性問題のように思われていました。すなわち、永続化を抽象化することで、プログラマーが永続化を気にしなくてよいようにするというものです。それから

                                            Rails: 私の好きなコード(5)永続化とロジックを絶妙にブレンドするActive Record(翻訳)|TechRacho by BPS株式会社
                                          • ActiveRecordとDataMapperってなに?

                                            ActiveRecord 概要 An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data. 引用: https://www.martinfowler.com/eaaCatalog/activeRecord.html DeepL訳: データベースのテーブルやビューの行をラップし、データベースへのアクセスをカプセル化し、そのデータにドメインロジックを追加するオブジェクトです。 ドメインオブジェクトにデータアクセスロジックを配置するイメージ。 ロジックとデータアクセスが密結合になってしまうためテストがしにくくなる(DB接続が必要になる) メリット 単純なCRUDのWebアプリ開発には向いているし、使いやすい

                                              ActiveRecordとDataMapperってなに?
                                            • SQLパフォーマンスチューニングの始め方 | 働くひとと組織の健康を創る iCARE

                                              こんにちは、iCAREサーバーサイドエンジニアの寺井(@krpk1900_dev)です。 私は今まで新規機能の開発を担当することがほとんどで、既存機能のパフォーマンス改善に取り組むときに何から手を着けて良いか分からなかったため、今回はSQLパフォーマンスチューニングについて調べた内容を記事にしたいと思います。 全体の流れ ざっくり調べてみた内容をフローチャートで整理してみました。 このフローチャートには含めませんでしたが、根本的な解決策としてそもそものロジックやデータ構造を見直すという方法もあります。 1. レスポンスに時間がかかっている箇所とその原因を特定する まずはDatadogのAPMなどでレスポンスに時間がかかっているリクエストを特定します。 APM(Application Performance Monitoring)とは、アプリケーションの性能を管理したり監視するための機能です

                                                SQLパフォーマンスチューニングの始め方 | 働くひとと組織の健康を創る iCARE
                                              • シン・ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社

                                                こんにちはgengenです。 初めに言ってしまうと、Ruby2.7の始端無しRange(beginless range)がActiveRecordのwhereに渡せるので日付検索が全部Rangeできて便利というだけの記事です。 ActiveRecordのwhereにはRangeが渡せる 「ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法」で詳しく紹介されてますが、そもそもwhereのハッシュ引数の値にRangeオブジェクトが渡せて、BETWEENと不等号を使い分けて上手いことクエリを作ってくれます。 User.where(activated_on: Date.new(2022,1,1)..Date.new(2022,12,31)).to_sql => "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"activate

                                                  シン・ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社
                                                • Rails 7 で追加されたComparisonValidatorで日付のバリデーションを実装する

                                                  この記事は GMOアドマーケティング Advent Calendar 2022 3日目の記事です。 はじめに こんにちは。 GMOアドマーケティングの石丸(@thomi40)です。 前回の記事では Rails 7 から実装された query_log_tags について紹介しました。 はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。以前、本ブログでRails 6.1に新しく追加された機能について紹介しました。今回はRails 7から追加された「query_log_tags」について紹介します。query_log_tagsとは?query_log_tags は Active Record のオプションの一つで、設定を有効にすることでクエリのログに自動でコメントを追加することができる機能です。元々は「Marginalia」というGemで実装されていた機能とのこと。詳細

                                                    Rails 7 で追加されたComparisonValidatorで日付のバリデーションを実装する
                                                  • 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
                                                    • 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: 認証gem 'Rodauth'を統合するrodauth-railsを開発しました(翻訳)|TechRacho by BPS株式会社

                                                        概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: What It Took to Build a Rails Integration for Rodauth | Janko's Blog 原文公開日: 2022/10/12 原著者: Janko Marohnić 日本語タイトルは内容に即したものにしました。 参考: 週刊Railsウォッチ20221025 RodauthをRailsと統合するのに必要だったこと 以下のrodauth-rails READMEもどうぞ。 Rails: 認証gem ‘rodauth-rails’ README(翻訳) Rodauthが登場した当時の既存のソリューションは、Rails(DeviseやSorceryの場合)か少なくともActive Record(Authlogicの場合)が必要だったので、ついにRailsに縛られないフル機能の認証フレームワ

                                                          Rails: 認証gem 'Rodauth'を統合するrodauth-railsを開発しました(翻訳)|TechRacho by BPS株式会社
                                                        • Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption

                                                          EngineeringSecurityWhy and how GitHub encrypts sensitive database columns using ActiveRecord::EncryptionYou may know that GitHub encrypts your source code at rest, but you may not have known that we encrypt sensitive database columns as well. Read about our column encryption strategy and our decision to adopt the Rails column encryption standard. You may know that GitHub encrypts your source code

                                                            Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption
                                                          • 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
                                                            • 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選
                                                              • GitHub - planetscale/fast_page: Blazing fast pagination for ActiveRecord with deferred joins ⚡️

                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                  GitHub - planetscale/fast_page: Blazing fast pagination for ActiveRecord with deferred joins ⚡️
                                                                • Introducing FastPage: Faster offset pagination for Rails apps — PlanetScale

                                                                  We’d like to introduce FastPage, a new gem for ActiveRecord that applies the MySQL “deferred join” optimization to your offset/limit queries. Here is a slow pagination query in Rails:

                                                                    Introducing FastPage: Faster offset pagination for Rails apps — PlanetScale
                                                                  • RubyでDSLが書きやすい理由を整理する - Qiita

                                                                    これは何 Rubyは「DSLが書きやすい言語」という説明がされることがあります。 なぜRubyはDSLが書きやすい、と言われるのかを僕なりにまとめてみました。 「こういう要素もあるからだよ」などあればぜひコメントや編集リクエストをいただけると嬉しいです。 DSLの例 DSLとは直訳するとドメイン固有言語です。 簡単なイメージで言うと、「ユーザーが自由に構文に近い仕組みを実装、提供できる」ようなものです。 詳しい説明はWikipediaにお任せします。 RubyやRailsで使われているDSLで有名なものはActiveRecord周りの実装などでしょうか。 例を記載します。

                                                                      RubyでDSLが書きやすい理由を整理する - Qiita
                                                                    • A Case for Query Objects in Rails

                                                                      You may have heard of query objects before: their main purpose is to encapsulate a database query as a reusable, potentially composable, and parameterizable unit. When is it best to reach for them and how can we structure them? Let’s dive into this topic. Reusing query filters In Rails, it’s very easy to create database queries. Provided that we’ve defined an Active Record model, we can easily con

                                                                        A Case for Query Objects in Rails
                                                                      • 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 と比較してみる
                                                                        • How to Avoid Race Conditions in Rails

                                                                          Race conditions are hard to debug—especially when you don't know it's a race condition! This article looks at some common race conditions and the best solutions for handling each one. When two users read and update a database record at the same time, you might run into critical problems that are undesirable. Let's say that for some reason, a customer clicks the pay button on the checkout page of a

                                                                            How to Avoid Race Conditions in Rails
                                                                          • 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
                                                                            • やりすぎないドメイン駆動設計 on Rails - マイペースなRailsおじさん

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

                                                                                やりすぎないドメイン駆動設計 on Rails - マイペースなRailsおじさん
                                                                              • Rails adds support for Fiber-safe ActiveRecord ConnectionPools

                                                                                Rails adds support for Fiber-safe ActiveRecord ConnectionPools Feb 23, 2022 One of the major focuses for Ruby 3 was parallelism and concurrency. A trailblazer in this space is the use of Ruby Fibers. Fibers are a concurrency mechanism that allows us to pause, loop, and resume execution while consuming far fewer context switches. It consumes less memory than threads while giving the developer contr

                                                                                  Rails adds support for Fiber-safe ActiveRecord ConnectionPools
                                                                                • 動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記

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

                                                                                    動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記