1

我正在使用activerecord-sqlserver-adapter gem 连接到我的 rails 应用程序中的 2008 SQL Server 数据库。请注意,我确实使用“建立连接”连接到整个应用程序中的多个数据库。我使用 rSpec 来测试我的应用程序,并且我想从 rSpec 创建的数据库中删除条目。我四处搜索,发现database_cleaner gem 可以解决我的问题,所以我包含了 Gem 并设置了我的 railsappname/spec/spec_helper.rb,如下所示:

require 'database_cleaner'

RSpec.configure do |config|

  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end

  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end

  config.before(:each) do
    DatabaseCleaner.strategy = :transaction
    FactoryGirl.reload
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
end

我还将以下行更新为错误

config.use_transactional_fixtures = false

到我的 rails_helper.rb RSpec.configure 块,因为那是该行最初的位置。

我也尝试将我的策略更改为 :truncation ,但这并没有产生什么影响。测试完成后,数据仍在插入数据库中,不会被删除。这是对 activerecord-sqlserver-adapter 的限制吗?是否有解决方法?这个问题是由于我在我的应用程序中连接到多个数据库而引起的吗?我已经用谷歌搜索了一段时间,没有看到其他人遇到同样的问题,所以非常感谢任何建议!

4

1 回答 1

0

感谢您的提醒,但您的堆栈溢出问题实际上与 SQL Server 或适配器无关。它实际上是您的软件如何组合在一起的副产品。我敢打赌,这一切都与你建立联系的方式有关。在适配器上查看此评论。

https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/issues/173#issuecomment-4427121

基本上,您要确保只有一个模型支持连接,以便您可以管理它。大多数 gem 只知道 ActiveRecord::Base。因此,如果您有一个包含许多数据库的应用程序,请确保您完成了所有必要的事情。这很棘手。以至于我什至写了一篇关于它的博客文章。你应该阅读它:)

http://technology.customink.com/blog/2015/06/22/rails-multi-database-best-practices-roundup/

最后......这纯粹是主观的......但我是 Rails 事务装置的忠实粉丝,并且不使用空数据库运行您的测试。我的建议:

同样,纯粹是主观的,但我希望最后一点有所帮助。干杯。

于 2015-11-09T01:47:02.243 回答