タグ

railsに関するoperandoのブックマーク (54)

  • タイミーのRailsアプリをシニアなエンジニアが採点したらだいぶ辛口だった - Timee Product Team Blog

    この記事はTimee Advent Calendar 2023シリーズ 1の1日目の記事です。 はじめに こんにちは、タイミーでバックエンドエンジニアをしている須貝(@sugaishun)です。昨年は弊社でアドベントカレンダーに取り組んだか覚えていないのですが、今年はなぜかいきなり3トラックで臨むということで、非常に勢いがあるなと思いました。量と勢いで攻めていくところが弊社らしいなと感じています。全て完走できると良いですね。 さて私はその中のひとつのトップバッターということで、タイミーのRailsアプリケーションについて弊社のシニアなエンジニアたちと雑談した内容を座談会風にお伝えできればと思います。事の発端は弊社Slackのバックエンドエンジニアが集まるチャンネルで「タイミーのRailsアプリケーションの健康度はどのくらいなのか?」という会話をしたことでした。その時の私の感想は「人によって

    タイミーのRailsアプリをシニアなエンジニアが採点したらだいぶ辛口だった - Timee Product Team Blog
  • mysql2インストールにはまった - Qiita

    gemfileにgem 'mysql2', '~> 0.3.21’をかいて bundle installしたときにこんなエラーが出る Fetching mysql2 0.3.21 (was 0.5.2) Installing mysql2 0.3.21 (was 0.5.2) with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/nosappu/.rbenv/gems/2.5.0/gems/mysql2-0.3.21/ext/mysql2 /Users/nosappu/.rbenv/versions/2.5.1/bin/ruby -I /Users/nosappu/.rbenv/versions/2.5.1/lib

    mysql2インストールにはまった - Qiita
  • Railsのポリモーフィック関連とはなんなのか - Qiita

    はじめに Railsのポリモーフィック(polymorphic、多態性)関連について、実装方法を説明している記事は見かけるのですが、実際これがどんなものでどんな時に便利なのかを説明している記事があまりなく、よくわからないで使っている人もいるようなので記事を書きました。 実装方法そのものについては詳細には説明しませんので、Railsのポリモーフィック関連をどう書くのかを知らない方はまずは公式ドキュメントを読んでいただけると理解が早いかと思います。 ボリュームは少ないので、2分もかからないかと思います。 Rails Guides: 2.9 ポリモーフィック関連付け "どんなものか"について、先に結論 ポリモーフィックとはダックタイピングの一種であり、 別の言い方をするとGoFのデザインパターンで言うところの「プログラムは実装に対してではなく、インターフェースに対して行う(Program to

    Railsのポリモーフィック関連とはなんなのか - Qiita
  • ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita

    ActiveRecordでN+1クエリを潰すためにeager loadingを行う場合、preloadやincludesやeager_loadが役に立つ。 Preload, Eagerload, Includes and Joinsという記事にそれらの違いがよくまとめられているんだけど、includesが挙動を変える条件があまり正確に書かれていなくて自信が持てなかったし、そもそも記事が古いのでRails4.1.5のソースを読んで調べた。 せっかく調べたので、全体を通して日語でまとめてみようと思う。 User.joins(:posts).where(posts: { id: 1 }) # SELECT `users`.* FROM `users` INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id` WHERE `posts`.`id

    ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita
  • doruby.jp

  • 【RSpec】shared_examplesを使ってテストをもう少しスリムにする - Qiita

  • [Rails] ActiveSupport::Concern の存在理由 - Qiita

    Railsにおいて共通した処理を切り出すために ActiveSupport::Concern がよく使われています。 しかし、Rubyには元から mix-in という処理を切り出す機能があります。 では、ActiveSupport::Concern の存在理由は何でしょうか。 mix-inの複雑な記述を省略できる Rubyの mix-in は通常以下のようなルールで記述します 切り出した機能を module として作成 共通メソッドを module 内に記述 クラスメソッドや組み込み先クラスの内部処理を module に入れたい場合は特殊なメソッドを使う必要がある ActiveSupport::Concern はこの3番目にある 特殊なメソッド の記述を簡単にしてくれます。 具体的にConcernあり/なし の例を見てみましょう。 (具体例コードは ActiveSupport::Conce

    [Rails] ActiveSupport::Concern の存在理由 - Qiita
  • ActiveSupport::Concernの使い方としくみ - Qiita

    はじめに Railsのソースコードを読んでいると頻繁に出くわすActiveSupport::Concernモジュールについて、その使い方とConcernモジュールで行っていることをまとめました。 対象のバージョンは、rails5.2.1です。 記事の目的 railsのソースコードを読むために学習した内容を整理してみました。 最近railsの勉強を始めた初心者なのですが、私と同じような初心者の方の学習の助けになったら嬉しく思います。 また、一次情報にあたるなどしてなるべく間違いの無いようにしたつもりなのですが、もしも記事の内容に間違いがありましたら、大変お手数ですがご教示頂けますと嬉しいです。 ActiveSupport::Concernモジュールとは RubyonRailsのコンポーネントであり、Ruby言語の拡張などを行っているActiveSupportの一部。 モジュールをインクルード

    ActiveSupport::Concernの使い方としくみ - Qiita
  • f.hidden_fieldとhidden_field_tagの使い方【Ruby on Rails】 - SakuraWi - BLog

    Ruby on Railsでは、form_withやform_forタグの中でパラメータをユーザが直接フォームから入力させないまま、値を受け渡したい時に使用するものとして hidden_fieldとhidden_field_tag があります。 controller で保持している user_id を次のアクションに渡したい、といった時に利用します。 formではユーザの名前などの情報を入力してもらって、裏側でuser_idを渡すイメージです。 使い方に少し注意が必要であるため、使用方法をまとめました。 また Ruby on Railsチュートリアルや初心者にとってこのふたつの違いはわかりにくいですし、混乱すると思うのでなるべくわかりやすく解説しようと思います。 対象読者 Rails触り始めた人、入門者 フォームを実装している人 f.hidden_fieldとhidden_field_ta

    f.hidden_fieldとhidden_field_tagの使い方【Ruby on Rails】 - SakuraWi - BLog
  • RSpecのletを使うのはどんなときか?(翻訳) - Qiita

    はじめに RSpecにはletという機能があります。 これを使うとインスタンス変数を次のように置き換えることができます。 # インスタンス変数を使う場合 before do @user = User.new(name: 'Taro', email: 'taro@example.com') end it 'is valid' do expect(@user).to be_valid end # letを使う場合 let(:user) { User.new(name: 'Taro', email: 'taro@example.com') } it 'is valid' do expect(user).to be_valid end RSpecを使い慣れている人であれば、おそらくletを使うことが多いと思いますが、初心者の人には違いやメリットがよくわからないと思います。 また、使い慣れている人で

    RSpecのletを使うのはどんなときか?(翻訳) - Qiita
  • ActiveRecordのenumで気をつけたい3つのポイント - 弥生開発者ブログ

    初投稿の@sunflatです。好きなプログラミング言語は MSX-BASIC です。 Rails 4.1でActiveRecordに追加された enum について、ちょっと調べてみました。 当は、Misocaの開発でenumを使ってその実例を紹介する予定だったのですが、後述する理由により今回は適していなかったので使いませんでした。 そこで今回は、(株)Misocaの近くにある「ムガルパレス」というインドカレー屋さんの、ランチセットのメニューを例に、enumを使う時に気をつけたいポイントをいくつか紹介します。 enum の使い方 ActiveRecordの enum を使うと、プログラムからは文字列(名前)でアクセスでき、DBには整数値で保存される属性を作成できます。 さっそくランチセットのモデルを作成しましょう。カレーの種類として、チキン、ポーク、野菜、豆 を選択できるとします。enum

    ActiveRecordのenumで気をつけたい3つのポイント - 弥生開発者ブログ
  • Rails enumについてまとめておく - Qiita

    class AddStatusToArticles < ActiveRecord::Migration def change add_column :articles, :status, :integer, default: 0 add_index :articles, :status # 必要に応じて end end class AddStatusToArticles < ActiveRecord::Migration def change add_column :articles, :status, :boolean, default: false add_index :articles, :status # 必要に応じて end end

    Rails enumについてまとめておく - Qiita
  • Railsでよく使う、tryメソッドの使い方をまとめてみた - Qiita

    tryメソッドとは何なのか オブジェクトがnilでない場合のみ、そのオブジェクトのメソッドを実行したい!って時に使うメソッドです。 これを使うことによって、オブジェクトがnilの時にメソッドを使ってエラーを吐いてしまうのを防ぐことができます。 tryメソッドを使えるようにする Ruby単体では使うことができません。 なのでまず、ActiveSupportを使ってRuby言語を拡張する必要があります。

    Railsでよく使う、tryメソッドの使い方をまとめてみた - Qiita
  • FactoryGirlチートシート

    (2019/11/24) 大人の事情で(だいぶ前に)FactoryGirlがFactoryBotに改名されたので、記事も更新しました。 単純置換しただけで内容は依然書いた当時のままなので、最新版とは乖離があるかもですご注意ください Railsのテスト環境として人気のあるFactoryBot/RSpecの組み合わせを学習中です。同時に学ばれている方も多いかと思うのですが、混乱しそうなのでFactoryBotだけ先に調べてみました。 概要 FactoryBot = データ(モデルインスタンス)生成のためのライブラリ オープンソース / MITライセンス 柔軟に記述できるため、Rails標準のfixturesの代替として人気 主にテストデータの生成に利用する 導入 Railsの場合はgem factory_bot_rails をインストールする。

    FactoryGirlチートシート
  • RailsのRSpecテストを速くする方法まとめ - Rails Webook

    Photo by Flickr: chief_huddleston's Photostream Railsの規模が大きくなると自動テストの実行時間もだんだんと長くなっていきます。素早く開発していくにはテストの実行時間を短くすることが大切です。 RSpecのテストを速くする方法をまとめましたので参考にしてください。 動作確認 Rails 4.1 rspec-rails 3.1.0 test-queue 0.2.9 目次 1. RSpecのパフォーマンス測定 2. test-queueで並列でテストを実行する 3. rspec-guardを使って更新したファイルを自動的にテストする 4. Springを使ってテストのロード時間を短くする 5. ログレベルを変える 6. GCを実行を抑える 7. RSpecファイルのリファクタリングをする 7.1. itを少なくする 7.2. createよりも

    RailsのRSpecテストを速くする方法まとめ - Rails Webook
  • Kaminari が発行する遅い COUNT クエリの結果をキャッシュする

    問題点 Rails でデファクトスタンダードとなっているページネーション gem に Kaminari というのがある。 めっちゃ最高便利で大好きなのだけど、巨大なテーブルに対して COUNT 文を投げると遅いという問題にぶち当たった。このような巨大なテーブルで Kaminari を使うために COUNT 文を発行しない without_count というメソッドが用意されている( Kaminari 1.0.0 でやってくる 5 つの大きな変更 - Qiita )が、これを使うと next_page や prev_page 、 total_pages が取れなくなる(当たり前)。次のページがあるかどうかはばくち状態になってしまう。 当は DB のスキーマを見直すべき(インデックスがちゃんと効くようにスキーマ変更するべき)だが、 Rails からもレガシーアプリからも同時に同じ DB にア

    Kaminari が発行する遅い COUNT クエリの結果をキャッシュする
  • 週刊Railsウォッチ(20200212後編)Rubyistが解説するUnicodeとUTF-8、Sorbetが速い理由、CSSの歴史、2019年の脆弱性まとめほか|TechRacho by BPS株式会社

    2020.02.12 週刊Railsウォッチ(20200212後編)Rubyistが解説するUnicodeとUTF-8、Sorbetが速い理由、CSS歴史、2019年の脆弱性まとめほか こんにちは、hachi8833です。昨日の大江戸Ruby会議をすっかり見落としてました😇。 大江戸Ruby会議で話すので東京にいたらそこで会いましょう! https://t.co/w1ADFEMhnx — Aaron Patterson (@tenderlove) February 8, 2020 サイト: 大江戸Ruby会議08 — 終わりました 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています

    週刊Railsウォッチ(20200212後編)Rubyistが解説するUnicodeとUTF-8、Sorbetが速い理由、CSSの歴史、2019年の脆弱性まとめほか|TechRacho by BPS株式会社
  • after_commitで変更されたカラムの情報を取得する - Qiita

    class User < ApplicationRecord after_save do p "after_save" p "changes" p self.changes p "previous_changes" p self.previous_changes end after_commit do p "after_commit" p "changes" p self.changes p "previous_changes" p self.previous_changes end end u = User.find 1 u.name = "BBB" u.save # "after_save" # "changes" # {"name"=>["AAA", "BBB"], "updated_at"=>[Tue, 09 Aug 2016 10:57:44 UTC +00:00, Tue, 0

    after_commitで変更されたカラムの情報を取得する - Qiita
  • RSpecの(describe/context/example/it)の使い分け - Qiita

    概要 なかなか使い分けする基準が理解できなかったけど、 こういうことかという考えが出てきたのでメモ。 使い分け方 テストの流れを端的に言うと、 機能、クラス、メソッドなどのテストの対象に対して、 特定の条件で実行してみて、 期待するアウトプットが返ってくるかを調べる、 ということになる。 ここで出てきたテストの対象と特定の条件とアウトプットに注目して、 (describe/context/example/it)の使い分けを行う。 describeには、テストの対象が何かを記述する。 contextには、特定の条件が何かを記述する。 exampleとitには、アウトプットが何かを記述する。日語で記述するときはexampleを使う。it "is 〜やit { should be 〜 }のような形で書きたい場合はitを使う。 describe 'テストの対象' do context '特定の条

    RSpecの(describe/context/example/it)の使い分け - Qiita
  • Rails: ActiveRecordのスコープで`present?`を使うとパフォーマンスが落ちることがある(翻訳)

    2018.10.02 Rails: ActiveRecordのスコープで`present?`を使うとパフォーマンスが落ちることがある(翻訳) 概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Careful with present? when using ActiveRecord scopes - Andy Croll 原文公開日: 2018/09/02 著者: Andy Croll 日語タイトルは内容に即したものにしました。 Rails: ActiveRecordのスコープでpresent?を使うとパフォーマンスが落ちることがある(翻訳) RailsではあらゆるRubyオブジェクトで#present?メソッドが利用できるので、このメソッドは多用される傾向があります。たとえば、ビューで配列をループで回す前に配列に要素があるかどうかをチェックしてからデータを表示するなどです。

    Rails: ActiveRecordのスコープで`present?`を使うとパフォーマンスが落ちることがある(翻訳)