&tag(Rails3+Guard+Spork+RSpec);
*目次 [#d354be96]
#contents
*参考情報 [#m3f18d5c]
-[[Rails3]]
-[[Mac Rails3 Guard Spork RSpec セットアップ - 鳩舎:http://rosylilly.hatenablog.com/entry/2012/08/20/004408]]
-[[これからテストを書き始めたい人のための Rails+RSpec+Spork+FactoryGir... #FactoryGirl #Spork #Rails #Rspec - Qiita [キータ]:http://qiita.com/items/fbe0a4ac2269a743dc17]]
-[[ASCIIcasts - “Episode 285 - Spork”:http://ja.asciicasts.com/episodes/285-spork]]

*基本 [#a814baea]
-コマンドラインから毎回rspec実行は遅すぎる。
-Guardはファイル監視ユーティリティ。
-Sporkはテスト実行用サーバー。
-これらを組み合わせて高速にテストを実行するのが今風らしい(2013/04/23(火))

*インストール [#vecd5d32]
**Gemfileを編集 [#r8df10ac]
-Gemfileに追加する
#pre{{
group :development, :test do
  # Rspec
  gem 'rspec-rails'
  # Spork
  gem 'spork'
  # Guard
  gem 'guard'
  gem 'guard-spork'
  gem 'guard-rspec'
end
}}
-インストール
 $ bundle install --path vendor/bundle

**RSpecのインストール [#r6fcc016]
-spec_helper.rbなどを生成
 $ bundle exec rails g rspec:install
-実行してみる
 $ bundle exec rspec

**Sporkのインストール [#qdc0932a]
-以下のコマンドを実行
#pre{{
$ bundle exec spork --bootstrap
}}
-spec/spec_helper.rbを編集する。Instructtions以下ずらずらと書かれている部分を、Spork.preforkかSpork.each_runに移動すればよいらしい。[[ASCIIcasts - “Episode 285 - Spork”:http://ja.asciicasts.com/episodes/285-spork]]。とりあえず全部preforkに移動するのが一番速い。
#pre{{
require 'rubygems'
require 'spork'
#uncomment the following line to use spork with the debugger
#require 'spork/ext/ruby-debug'

Spork.prefork do
  # Loading more in this block will cause your tests to run faster. However,
  # if you change any configuration or code from libraries loaded here, you'll
  # need to restart spork for it take effect.

  # This file is copied to spec/ when you run 'rails generate rspec:install'                                                             ENV["RAILS_ENV"] ||= 'test'  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'  require 'rspec/autorun'

  # Requires supporting ruby files with custom matchers and macros, etc,
  # in spec/support/ and its subdirectories.
  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
  RSpec.configure do |config|    # ## Mock Framework
    #
    # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
    #
    # config.mock_with :mocha
    # config.mock_with :flexmock
    # config.mock_with :rr

    # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
    config.fixture_path = "#{::Rails.root}/spec/fixtures"

    # If you're not using ActiveRecord, or you'd prefer not to run each of your
    # examples within a transaction, remove the following line or assign false
    # instead of true.
    config.use_transactional_fixtures = true

    # If true, the base class of anonymous controllers will be inferred
    # automatically. This will be the default behavior in future versions of
    # rspec-rails.
    config.infer_base_class_for_anonymous_controllers = false

    # Run specs in random order to surface order dependencies. If you find an                                                              # order dependency and want to debug it, you can fix the order by providing
    # the seed, which is printed after each run.
    #     --seed 1234
    config.order = "random"
  end

end

Spork.each_run do
  # This code will be run each time you run your specs.
end
}}

-実行する。
 $ bundle exec spork
-「Spork is ready and listening on 8989!」が表示されたら別のターミナルから--drbつきでrspecを実行
 $ bundle exec rspec --drb
-ここまででも毎回rspecでテストするよりは速くなっている。
**Guardのインストール [#e74ea5a5]
-以下のコマンドを実行する
$ bundle exec guard init spork
$ bundle exec guard init rpsec
-Guardfileを編集。rspecにcliオプションを追加する。
 guard 'rspec', :cli => '--drb'  do
-実行する
 bundle exec guard

***ERROR - Could not start Spork server for RSpec, Test::Unit after 30 seconds. [#of5e953a]
-以下のエラーがでた場合Guardfileを編集し、:waitを追加する
 guard 'spork', :wait => 10,
-それでもだめな場合、rm -r test/する。[[ruby on rails - Guard + spork + Rspec issue - How do I remove hooks to Test::Unit? - Stack Overflow:http://stackoverflow.com/questions/14791957/guard-spork-rspec-issue-how-do-i-remove-hooks-to-testunit]]

*Tips [#qd9a7069]
**全てのテストを実行したい [#a3120581]
-guard(main)>のプロンプトでリターンを押す。

*トラブルシューティング [#p730dd8c]
**Rails4でuninitialized constant ActiveModel::Observingが発生 [#g53df313]
-[[Rails4 で spork を動かすと`uninitialized constant ActiveModel::Observing (NameError)`になる時の対処法 - Qiita:http://qiita.com/ironsand/items/0b5ff8c46a384ddc92c6]]にあるように、Gemfileを修正後、bundle update。
#pre{{
  # Rspec
  gem 'spork', '1.0.0rc4'
}}


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS