gpt4 book ai didi

ruby - 在测试之间删除 Cassandra DB (Rspec)

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:05 27 4
gpt4 key购买 nike

我正在运行涉及 Cassandra 数据库中数据的 rspec 测试。在测试之间删除/清理数据库的最佳做法是什么?对于我的 mongo 数据,我正在使用 DatabaseCleaner,并且正在寻找 Cassandra 的等效项。我目前正在我的 spec_helper.rb 中执行以下操作,但速度非常慢,因此我正在寻找更好的解决方案。谢谢!

config.before :each do
['column1', 'column2'].each do |name|
begin
$cassandra.drop_column_family(name)
rescue
next
ensure
cf = Cassandra::ColumnFamily.new(keyspace: 'db_name', name: name, comparator_type: 'TimeUUIDType')
$cassandra.add_column_family(cf)
end
end

最佳答案

老问题,但我找到了有用的要点,也许它也会帮助其他人(我正在使用 cequel gem 访问 Cassandra):

https://gist.github.com/elado/c95a4ffa952809865ee8

# in spec_helper.rb

RSpec.configure do |config|
records = []

config.before :suite do
Cequel::Record.descendants.each do |klass|
klass.after_create {|r| records << r }
end
end

config.after :each do
records.each(&:destroy)
records.clear
end

def clean_cequel!
Cequel::Record.descendants.each { |klass| Cequel::Record.connection.schema.truncate_table(klass.table_name) }
end

config.before :suite do
clean_cequel!
end

config.after :suite do
clean_cequel!
end
end

关于ruby - 在测试之间删除 Cassandra DB (Rspec),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com