我试图从Sinatra 1.3.x升级到1.4.2。规格运行良好,但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.x中运行良好,但在1.4.x版本中失败。最新版本的cucumber-sinatra基本上产生了相同的env.rb
。
该应用为available on Github。
1.3.x和1.4之间的设置哈希是否有任何改变可能导致此问题?我做错了吗?
答案 0 :(得分:0)
我查看了official Cucumber+Sinatra guide并注意到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
它就像一个魅力。