我有一个类,它执行存储在YAML文件中的SQL语句(更新,插入和删除)。我希望所有的陈述都是一个交易的一部分。如果任何SQL语句失败,则会回滚它们。如果所有的陈述都成功了,那么他们会承诺。我正在连接到一个MySQL数据库。这里是我的代码:如何在Ruby DataMapper中使用事务?
require 'dm-core'
class SqlExecuter
def initialize(input_yaml_file_name)
@input_yaml_file_name = input_yaml_file_name
@adapter = DataMapper.repository(:default).adapter
@sql_statements = YAML::load(File.open(input_yaml_file_name))
end
def execute()
puts "Executing SQL statements in #{@input_yaml_file_name} file...."
@sql_statements.each do | sql_statement |
@adapter.execute(sql_statement)
end
end
end # class SqlExecuter
我想我所有的@ adapter.execute调用是一个事务的一部分。我查看了dm-transactions gem中的代码,但我无法弄清楚在这种情况下如何使用它。
难道只是我,还是根本没有'dm-transactions'的文档?我当然找不到它。 – fennec