aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb26
1 files changed, 15 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
index ab5c9b822f..8038bc7051 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
@@ -134,14 +134,7 @@ module ActiveRecord
# DATABASE STATEMENTS ======================================
def execute(sql, name = nil) #:nodoc:
- log(sql, name) { @connection.execute(sql) }
- rescue ActiveRecord::StatementInvalid => exception
- if exception.message =~ /database schema has changed/
- reconnect!
- retry
- else
- raise
- end
+ catch_schema_changes { log(sql, name) { @connection.execute(sql) } }
end
def update(sql, name = nil) #:nodoc:
@@ -179,15 +172,15 @@ module ActiveRecord
def begin_db_transaction #:nodoc:
- @connection.transaction
+ catch_schema_changes { @connection.transaction }
end
def commit_db_transaction #:nodoc:
- @connection.commit
+ catch_schema_changes { @connection.commit }
end
def rollback_db_transaction #:nodoc:
- @connection.rollback
+ catch_schema_changes { @connection.rollback }
end
@@ -337,6 +330,17 @@ module ActiveRecord
@connection.execute sql
end
end
+
+ def catch_schema_changes
+ return yield
+ rescue ActiveRecord::StatementInvalid => exception
+ if exception.message =~ /database schema has changed/
+ reconnect!
+ retry
+ else
+ raise
+ end
+ end
end
class SQLite2Adapter < SQLiteAdapter # :nodoc: