1

我对 Rails 开发几乎是新手。我目前正在阅读 Avdi Grimm 的 Objects on Rails 以在我的 rails 应用程序中使用 #SOLID 设计,而不是被迫遵循一些会造成混乱和不可读的代码和设计的约定。

我想设置 nulldb 并在我的快速规范中使用它,这些规范正在测试应用程序的业务逻辑,但我无法让它工作。我在这里阅读了 nulldb GitHub 页面上的安装指南 -> https://github.com/nulldb/nulldb。我安装了 activerecord-nulldb-adapter gem 并将它也放入了我的 Gemfile 并运行了 bundle install 命令,所以它现在已经完全安装了。我有一个 spec_helper_lite.rb 文件,我在我的快速规范中使用它,所以我认为在其中设置 nulldb 是个好主意。这是我的 spec_helper_lite.rb 文件中 nulldb 部分的代码:

require 'nulldb_rspec'

def setup_nulldb
    schema_path = File.expand_path("../db/schema.rb", File.dirname(__FILE__))
    ActiveRecord::Base.establish_connection(:adapter => :nulldb,
                                                        :schema => schema_path)
    NullDB.nullify(:schema => schema_path)
end

def teardown_nulldb
    NullDB.restore
end

然后我在我的快速规范中需要这个 spec_helper_lite.rb 并在我的规范的方法之前和之后调用 setup 和 teardown nulldb 方法。当我运行规范时,我会收到错误未初始化常量 ActiveRecord::ConnectionNotEstablished (NameError)。我尝试了不同的方法,例如删除 setup_nulldb 中的建立连接行,我会得到同样的错误。我什至在我的 spec_helper_lite 中需要 'active_record' 只是为了看看会发生什么,然后我会收到 NullDB 模块的错误“未定义的方法无效”,显然规范变得完全缓慢导致需要 active_record。我搜索了很多关于如何设置 nulldb 的内容,我看到的所有内容都解释了如何设置它,但它对我不起作用。我使用 nulldb 版本 0.2.1、rails 3.0.0 和 rspec 2.0.1

感谢您对如何正确设置的帮助。提前致谢。

山姆

4

1 回答 1

1

我遇到了类似的问题(但使用 minitest 和独立于 rails 的 activerecord)。我尝试了你提到的所有相同的东西。原来我只是在使用 ruby​​gems 中的任何东西。看起来更新我的 Gemfile 以直接从 github 提取解决了这个问题:

group :development, :test do
  gem 'activerecord-nulldb-adapter', :git => 'git://github.com/nulldb/nulldb.git'
end

更新后你会想要bundle install再次。

于 2012-06-20T16:03:38.587 回答