YAML ファイルに格納されている SQL ステートメント (更新、挿入、および削除) を実行するクラスがあります。すべてのステートメントを 1 つのトランザクションの一部にしたいと考えています。SQL ステートメントのいずれかが失敗すると、それらはロールバックされます。すべてのステートメントが成功した場合、ステートメントはコミットされます。MySQL データベースに接続しています。これが私のコードです:
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 呼び出しを 1 つのトランザクションの一部にしたいと考えています。dm-transactions gem のコードを見てきましたが、このコンテキストでの使用方法がわかりません。