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 젬의 코드를 살펴 봤지만이 컨텍스트에서이 코드를 사용하는 방법을 알 수는 없습니다. 오류가 발생하면이 트랜잭션과 롤백에 SQL 문을 구현하는
나만인가, 아니면'dm-transactions'에 대한 문서가 전혀 없습니까? 나는 확실히 그것을 발견 할 수 없다. – fennec