0

我试图从 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.

该应用程序在 Github 上可用

1.3.x 和 1.4 之间的设置散列是否有任何更改可能导致此问题?我做错了吗?

4

1 回答 1

0

我查看了官方 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

它就像一个魅力。

于 2013-04-10T19:49:21.613 回答