2012-08-09 3 views
0

나는 주 시험 주자로서 bundle exec guard을 사용하고 있으며, 나는 그것에 대해 총 n00b 임에도 불구하고 그것을 좋아한다.더 나은 가드 (Spork/RSpec)

나를 괴롭혔던 것은 실제 코드를 변경하기 위해 수동으로 'r'을 다시 시작해야하는 방식입니다. 나는 느린 재 장전 시간으로 괜찮 았지만 (비록 rails creload!과 같은 일을했다면 좋겠지 만) 내가 참을 수없는 것은 수동으로 창으로 전환해야하고 r을 누르는 것입니다. 특히 이것을 잊어 버렸을 때, 그것이 모두 좋은 것이라고 생각할 때. 따라서 비효율에 비하면 불일치합니다.

guard 'spork', wait: 45 do 
    watch 'config/application.rb' 
    watch 'config/environment.rb' 
    watch %r{^config/environments/.+\.rb$} 
    watch %r{^config/initializers/.+\.rb$} 
    watch 'Gemfile' 
    watch 'Gemfile.lock' 
    watch 'spec/spec_helper.rb' do 'spec' end 
end 

guard 'rspec', version: 2 do 
    watch %r{^spec/.+_spec\.rb$} 
    watch %r{^lib/(.+)\.rb$} do |m| "spec/lib/#{m[1]}_spec.rb" end 

    watch %r{^spec/.+_spec\.rb$} 
    watch %r{^app/(.+)\.rb$} do |m| "spec/#{m[1]}_spec.rb" end 
    watch %r{^app/(.*)(\.erb|\.haml)$} do |m| "spec/#{m[1]}#{m[2]}_spec.rb" end 
    watch %r{^lib/(.+)\.rb$} do |m| "spec/lib/#{m[1]}_spec.rb" end 
    watch %r{^app/controllers/(.+)_(controller)\.rb$} do |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] end 
    watch %r{^spec/support/(.+)\.rb$} do 'spec' end 
    watch 'spec/spec_helper.rb' do "spec" end 
    watch 'config/routes.rb' do 'spec/routing' end 
    watch 'app/controllers/application_controller.rb' do 'spec/controllers' end 
    # Capybara request specs 
    watch %r{^app/views/(.+)/.*\.(erb|haml)$} do |m| "spec/views/**/#{m[1]}_spec.rb" end 
    watch %r{^app/.*\.sass$} do 'spec/requests/*' end 
end 

내가 좋아하는 일을 생각 :

여기 내 Guardfile입니다

watch %r{^app/models/*.rb} do system `killall bundle` end 
… 

그러나 그것은 분명 엄청난 kludge입니다. 여전히 지나치게 통과하는 테스트가 스크롤하는 것을 보는 것보다 낫습니다.

이 설정을 개선하는 데 도움을 주셔서 감사합니다.

+0

아하,이 방법은 간단합니다. 'guard 'spork'섹션에'watch' 행을 더 추가하면됩니다. 거기에있는 것이 전부 다시 시작됩니다. – rking

답변

0

여기 내 "1 일"편집 (즉, 하나는 위의 내가 그것을 가능한 한 약간의 학습으로 가야 을하려고 주위 멍청이, 그러나 이것은 좀 더 많은 정보를 입니다했다). 이것은 나를 위해 훨씬 잘 작동합니다.

notification :on 
guard 'spork', wait: 45, rspec_env: { 'RAILS_ENV' => 'test' } do 
    [ 
    %r{^config/(environments|initializers)/.+\.rb$}, 
    %r{^config/(application|environment|routes)\.rb$}, 
    %r{Gemfile(.lock)?}, 
    %r{^lib/}, 
    %r{app/(models|controllers)}, 
    'spec/spec_helper.rb' 
    ].each do |e| watch e end 
end 
guard 'rspec', version: 2 do 
    watch %r{^spec/.+_spec\.rb$} 
    watch %r{^app/(.+)\.rb$} do |m| "spec/#{m[1]}_spec.rb" end 
    watch %r{^lib/(.+)\.rb$} do |m| "spec/lib/#{m[1]}_spec.rb" end 
    watch %r{^app/(.*)(\.erb|\.haml)$} do |m| "spec/#{m[1]}#{m[2]}_spec.rb" end 
    watch %r{^app/views/(.+)/.*\.(erb|haml)$} do |m| "spec/views/**/#{m[1]}_spec.rb" end 
    watch %r{^app/.*\.sass$} do 'spec/requests/*' end 
end 

괜찮습니다. 앞으로 더 많은 개선이있을 것입니다. -☈