我有一個類,它執行存儲在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