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 に答える