我正在尝试从Sinatra 1.3升级。X到1.4.2。specs运行正常,但是Cucumber失败了:
undefined local variable or method `settings' for #<RechargeWorld:0x007ffbd606ba60> (NameError)
env.rb
的相关部分如下所示:
class RechargeWorld
include Capybara::DSL
include RSpec::Expectations
include RSpec::Matchers
def db
@db ||= CouchRest.database(settings.db)
end
end
其中一些代码(注意:我添加了db
方法)是由cucumber-sintra生成的,它在1.3中工作得很好。但在任何版本1.4.x中都失败。最新版本的cucumber-sinatra产生的env.rb
基本相同。
应用程序在Github上可用。
设置哈希值在1.3。X和1.4可能导致这种情况?我做错了吗?
我查看了官方的Cucumber+Sinatra指南,注意到app
方法返回Sinatra::Application
。
所以我把env.rb
部分改成了:
class RechargeWorld
include Capybara::DSL
include RSpec::Expectations
include RSpec::Matchers
def db
@db ||= CouchRest.database(Sinatra::Application.settings.db)
end
end
效果很好