這裏有不少精彩的教程,過去我也沒有太多的麻煩。但是,經過數小時的努力,我一定會錯過一些東西。讓spork與Ruby 1.9.2/3 + Rails 3.1 + Rspec一起工作?
我已經完成了標準的安裝說明,並啓動了叉勺服務器:
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
Spork is ready and listening on 8989!
看起來不錯。
然後,我跳了一個新的標籤,並運行我的規格:
$ rspec spec
此命令只在一剎那運行後沒有返回。所以我跳回到叉勺服務器,看看發生了什麼,得到:
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
Spork is ready and listening on 8989!
Running tests with args ["--color", "spec"]...
Exception encountered: #<DRb::DRbConnError: druby://localhost:56736 - #<Errno::ECONNREFUSED: Connection refused - connect(2)>>
backtrace:
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:736:in `rescue in block in open'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:730:in `block in open'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:729:in `each'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:729:in `open'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1191:in `initialize'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1171:in `new'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1171:in `open'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1087:in `block in method_missing'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1105:in `with_friend'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1086:in `method_missing'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1074:in `respond_to?'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/run_strategy/forking.rb:10:in `block in run'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/forker.rb:21:in `block in initialize'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/forker.rb:18:in `fork'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/forker.rb:18:in `initialize'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/run_strategy/forking.rb:9:in `new'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/run_strategy/forking.rb:9:in `run'
/Users/briancody/.rvm/gems/[email protected]/gems/spork-0.9.0.rc9/lib/spork/server.rb:48:in `run'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1548:in `perform_without_block'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1508:in `perform'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1586:in `block (2 levels) in main_loop'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1582:in `loop'
/Users/briancody/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/drb/drb.rb:1582:in `block in main_loop'
Done.
出於某種原因,drb
是無法連接?我瘋狂搜索,但那裏似乎沒有任何幫助。
一些可能的線索
- 端口(在這種情況下
56736
)改變每次我試圖在這兩個紅寶石1.9.2運行套件 - 我得到相同的結果和Ruby 1.9的時間。 3
- 我使用mac(雪豹)和防火牆被禁用
- 我試過它在一個完全不同的mac(也是雪豹),結果相同。
- 我正在使用最新版本的黃瓜,rspec和spork。
- 我也設置了黃瓜spork,它失敗了相同的方式。
正如你所看到的,我一直在抨擊它一段時間。我的項目使用了很多寶石,沒有spork使得測試真的非常糟糕。請幫助...
UPDATE
這裏是我的spec_helper
:
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require "email_spec"
require 'webmock/rspec'
require 'vcr'
require 'database_cleaner'
include Devise::TestHelpers
include EmailSpec::Helpers
include EmailSpec::Matchers
# Stub all updates to search indexes
class Profile
def update_tank_indexes ; end
def delete_tank_indexes ; end
end
class Journal
def update_tank_indexes ; end
end
# Apparently rspec doesn't understand <tt>main_app</tt> so stub it out.
def main_app ; self ; end
# 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|
config.mock_with :rspec
# 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
config.extend VCR::RSpec::Macros
# Always clean the database after running describe/context blocks to ensure a
# consistent state. This is especially important when using the <tt>rspec-set</tt>
# method. This method creates setup object once -- and only once -- proir to
# running an entire describe/context block. In this way, it's similar to using
# <tt>before(:all)</tt> except that <tt>set</tt> is better because:
#
# * It automatically reloads the object before each example, making it much
# safer than before(:all) which can cause bugs if you're not careful.
# * It's lazily evaluated.
#
# You can read more at:
#
# * eggsonbread.com/2010/05/25/speed-up-your-specs-with-set/
# * github.com/pcreux/rspec-set
#
# Note: This is not part of default configuration. Be sure to retain this snippet
# when upgrading.
#
DatabaseCleaner.strategy = :truncation
config.before(:all) do
DatabaseCleaner.clean
end
config.after(:suite) do
DatabaseCleaner.clean
end
end
end
Spork.each_run do
# This code will be run each time you run your specs.
end
你好,也許你的spec_helper文件可以幫助我們在正確的方向嗎? – Rasmus