Help us understand the problem. What is going on with this article?
asin: 4797363827 title: “[Rails高速化] ページキャッシュ、N+1対策、SQLチューニング” category: Rails 🐯 tags: [Rails, Ruby, Gem]『Cookpadではユーザーへのレスポンスタイム 200ms/reqを目標にしている』に感銘を受けて書き始めたこの記事ですが、『パフォーマンス・チューニングやオススメGem in 「Rails勉強会@東京 第88回」』でいろいろ教えてもらったり、最近関わっているサイトのリニュアールで試行錯誤したので、忘備録も兼ねて記事をアップデートします! 🚕 目次(1) N+1問題の対策 (2) Railsのキャッシュについて (3) 開発中ならrack_mini_profiler (4) 運用中なら断然NewRelicがおすすめ (5) mysqlの簡単チューニング 🚌 (1) N + 1問
こんにちは、鈴木です。 Rails の便利なライブラリをシリーズでご紹介してみたいと思います。 今回は「N+1 問題」を検出してくれるライブラリ、bullet です。 bullet (http://github.com/flyerhzm/bullet) N+1 問題 N+1 問題とは、OR マッパーを使用しているときに発生しがちな問題です。 何かの一覧画面を作成しているときに、 一覧に表示するデータを取得するために SELECT を 1 回実行(N レコード返される) 各データの関連データを取得するために SELECT を N 回実行 データベースアクセス(SELECT)が合計 N+1 回も実行される(JOIN して 1 回の SQL で取得した方が効率的) というものです。 具体的なコードで考えてみましょう。 例として店舗の一覧画面を作成しているとします。 関係するモデルは以下の通りです
環境 ruby 2.2.2p95 Rails 4.2.3 devise 3.5.6 minitest 5.8.4 fixture deviseの導入 導入方法については詳しい記事がたくさんあるのでそちらを参考にしてください。 Qiita:Deviseの設定手順をまとめてみた。 その1 導入編 とか Qiita:Rails 4.2 で ユーザー管理・認証 (devise) とか。 フィールドを追加する場合はこちらを参考にすると良いと思います。 Qiita:Rails + Deviseでusernameを追加する testの前に githubのwikiは目を通しておくと良いでしょう。 あとminitestで書きます。 wikiにはRSpec, factrygirlの書き方が載っていますので参考にしてください。 functional test fixtureでユーザーを用意します。
2013年08月22日13:26 Ruby factory_girl で最低限知っておきたい4つの使い方 みなさん、テストを書くときには Fixture Replacement として何を使ってますか?一番メジャーなところだと factory_girl でしょうか。machinist も有名ですね。シンタックスの違いのようなので基本的にはどちらでも良さそうです。 参考(stackoverflow)Machinist vs FactoryGirl - pros and cons In other words, both are extremely similar, just with a different default syntax. 今回は(僕が factory_girl4.2.0 を使ってるので)factory_girl4.2.0 についての話です。 インストール まずインストールし
(2022.5.4追記) FactoryGirlはFactoryBotという名前に変更されています(参考)。この記事は昔の名前である「FactoryGirl」を使っています。 はじめに 今年のゴールデンウイークはMinitestとRSpec、FixturesとFactoryGirlについていろいろ研究(?)していました。 具体的にはこんなことをやっていました。 Rails Tutorial 第3版を写経した(第3版ではMinitestとFixturesを使っている) Rails TutorialのテストコードをRSpecとFactoryGirlで書き直した Everyday RailsのテストコードをRSpec + FactoryGirlからMinitest + Fixturesに書き直した The Minitest Cookbookを読んだ 今回のエントリではMinitestとRSpec
Rubocopって何? bbatsov/rubocop Rubyの静的コード解析器 ruby-style-guideを遵守させる 問題点について自動的に修正してくれる Rubocop入れると何が良いの? ruby-style-guideという標準的なコーディングスタイルガイドにコードが準拠する 可読性up 不穏なコードが減る結果、バグの元が減る コーディング規約を設定ファイルにできる コーディング規約違反を自動的に検出/修正できる -新規メンバーが入った時に、そのプロジェクトのコーディングスタイルに合わせることが容易 特に初心者に有用という意見が多い インストール # Gemfile gem 'rubocop', require: false 使い方 $ bundle exec rubocop 設定ファイル カレントディレクトリに.rubocop.ymlを用意する #.rubocop.ym
CI(継続的インテグレーション)サービスまとめ・14個!では、BitBucketで使えるCIサービスを探していましたが、時が経てば事情は変わり、Githubのプライベートリポジトリで無料で使えるのが必要になったので、前に紹介した「Magnum CI」を試しました。 Magnum CIはプライベートリポジトリがいくつでもなぜか完全無料。Betaとも書いてないけど、アカウント設定にフリープランと記載があるので、将来的に有償プランをやる気はあるようです。 なお、今回はGithubのプライベートリポジトリを使いますが、Magnum CIはBitBucketでも使えます。それだけじゃなく、GitLab、Beanstalk(知らない。AWSのではないらしい)、 自分で立てたgit, mercurial, subversionでも使えます。 今回対象とするプロジェクトはRailsアプリなんですが、以下の
概要 Ruby on Railsのプロジェクトに携わり、前任者がいないプロダクトを引き継ぐ際に、 「最初から〜〜しておいて欲しかった」と思うことが多い。 今まで思った、「最初から〜〜しておいて欲しかった」ということを自分なりにまとめてみた。 真っ先にすべき5つのこと CIツールの導入 Githubを使っているなら、CircleCIあたりが良いと思われる。 bitbucketなら、どうやらMagnumCIというのがあるらしい。 とにかく、真っ先にCIツールを入れましょう。 静的解析ツール(Rubocop)の導入 静的コード解析ツール。 コードの一定レベルの綺麗さを保つなら、最初から入れないとダメ。 そして、大事なのが、Rubocopでwarningやerrorが出たらCIツールで失敗するようにすること。 これは本当に初めからやらなきゃ後悔するもの。 セキュリティチェックツール(Brakema
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く