Rails

モデルのscopeの、specを記述する

モデルのscopeのspecを記述したいと思ったのですが、「scope rspec」でGoogleで検索したところ、How can i have an rspec test for my default scope: http://stackoverflow.com/questions/6853744/how-can-i-have-an-rspec-test-for-my-default-scope にそ…

Rails本体の、testを実行する(5) 番外編

http://d.hatena.ne.jp/kouji0625/20130615/p1 の続きで「Travis CIを設定してみましょう!」と行きたかったのです、まったく設定できませんでした。他人のプロジェクトをTravis CIで設定するのはムズいね。いつかはできるけど、いまではありません(キリッ …

Rails本体の、testを実行する(4)

一昨日 (http://d.hatena.ne.jp/kouji0625/20130613/p1) の続きです。 一昨日の時点で、あとは activerecord の失敗するテストをどうにかすればOKという状態でした。さぁ、今日もはりきっていってみよ〜♪ activerecord テストに失敗する activerecord のテス…

Rails本体の、testを実行する(3)

昨日 (http://d.hatena.ne.jp/kouji0625/20130612/p1) の続きです。 昨日の時点で、あとは activerecord のみという状態でした。さぁ、今日もはりきっていってみよ〜♪ activerecord MySQL のセットアップ 事前に MySQL そのものは公式サイト (http://dev.mys…

Rails本体の、testを実行する(2)

昨日 (http://d.hatena.ne.jp/kouji0625/20130611/p1) の続きです。 全体のテストを実行する ここで全体のテストを実行してみて、現状の問題を確認します。 $ mkdir -p ../rails-test-logs/v3.0.3/ $ bundle exec rake test 2>&1 | tee ../rails-test-logs/v…

Rails本体の、testを実行する(1)

さて、急な話ですが少し古い Rails の test を実行してみたいと思います。 なんで古い Rails なのかって!?そりゃ、大人の事情ってもんです。 あと、なんで test するのかって!?いや〜、 Rails にセキュリティパッチだけを適用したいことってあるじゃない…

テストコード(spec)の修正なしで、テストをn倍速くする

(まったく試してないけど)QSpecを紹介します。 テストが遅いので parallel_tests で高速化しようとしたが、効率わるすぎて腹がたってきたのでより効率的な Qspec をつくった。いくつかの rails プロジェクトでベンチマークしたところ、2倍以上の高速化効果が…

Rails本体の、generatorのgeneratorを変更したい!!

最近、Railsのカスタムgeneratorが銀の弾丸(開発効率を飛躍的に上げるもの)にならないかと思っていろいろ試しています。いまのところ、成果は上げっていませんwww駄菓子菓子(だがしかし)、generatorを作成することに対する敷居がとても下がりました。まだ、R…

Railsのカスタムgeneratorの、グループ分けをする

今回のお題 Railsのカスタムgeneratorは、以下のように「Rails」「Rspec」といったグループに分けられています。このグループ分けはどのようにするのでしょうか? $ rails generate --- 以下、実行結果 --- Usage: rails generate GENERATOR [args] [options…

Railsのカスタムgeneratorの、specを記述する(その2)

先日 (http://d.hatena.ne.jp/kouji0625/20130524/p1) の続きでやんす。 ammeter でカスタム generator の spec を記述して実行すると、rm -rf ..., mkdir -p ...というログが標準エラー出力に出力されました。 うるさいので設定で変更できないかと調べてみ…

Railsのカスタムgeneratorの、specを記述する

先日はRailsのカスタムgeneratorの作成方法を説明しました (http://d.hatena.ne.jp/kouji0625/20130523/p1) が、今日はそのspecの記述方法を説明します。generator自体の作成はちょろいのですが、generatorのspecとなると面倒そうですね。実際、rspec-rails…

いまさら聞けないRailsのカスタムgeneratorの作成方法

はじめに Railsのアプリケーションを作成していると、同じようなモデル(STIを使っているとよくありますよね)、同じようなコントローラ(RESTfulにすればするほど、コントローラは似てきますよね)が増えてきます。新しいモデルやコントローラを作るときに、コ…

本物のexamplesの共有はこんな感じだろ〜?(RSpecのshared_examplesを定義するファイルの説明です)

Ruby + RSpecでのTDD(BDD)において、shared_examplesやshared_examples_forは最高の武器ですね。 ご存知のようにtest-unitではRubyの言語仕様を駆使してテストコードの共有資産(assert_XXXXなど)を用意することになりますが、RSpecではshared_examplesやshar…

jpmobileとRailsの各バージョンの対応

Railsの各バージョンに合わせて、jpmobileのバージョンを変更する必要があるのですね。 https://github.com/jpmobile/jpmobile/wiki/Version-:-Jpmobile-vs-Rails Gemfileはこんな感じにするのでしょうかね。(動作確認していません。すまん。) # Rails 3.2.x…

SomeClass.any_instance.stub(:some_method).ordered => NG

RSpec MockのSomeClass.any_instance.stub(:some_method)したものには、orderedメソッドがないのですね。知らなかった。 あるモデルをsave!したあとに処理していることをチェックしたかったので、 SomeModel.any_instance.stub(:save!).ordered => 例外発生 …

「おい!ちゃんとロールバックしてるか!!」をRSpecで表現する

Railsアプリケーションのコントローラでは、なにかしらの例外が発生するとデータベースの変更をロールバックしますよね。 class ItemsController < ApplicationController def create Item.transaction do ... if エラー条件 raise ActiveRecord::Rollback e…