class ActiveRecord::SaferMigrations::SettingHelper
Public Class Methods
new(connection, setting_name, value)
click to toggle source
# File lib/active_record/safer_migrations/setting_helper.rb, line 6 def initialize(connection, setting_name, value) @connection = connection @setting_name = setting_name @value = value end
Public Instance Methods
with_setting() { || ... }
click to toggle source
We're changing a connection level setting, and we need to make sure we return it to the original value. It is automatically reverted if set within a transaction which rolls back, so that case needs handling differently.
| In Transaction | Not in transaction
Raises | Reset setting | Reset setting Doesn't raise | Don't reset setting | Reset setting
# File lib/active_record/safer_migrations/setting_helper.rb, line 20 def with_setting record_current_setting set_new_setting yield reset_setting rescue StandardError reset_setting unless in_transaction? raise end
Private Instance Methods
in_transaction?()
click to toggle source
# File lib/active_record/safer_migrations/setting_helper.rb, line 46 def in_transaction? ActiveRecord::Base.connection.open_transactions.positive? end
record_current_setting()
click to toggle source
# File lib/active_record/safer_migrations/setting_helper.rb, line 32 def record_current_setting @original_value = @connection.get_setting(@setting_name) end
reset_setting()
click to toggle source
# File lib/active_record/safer_migrations/setting_helper.rb, line 41 def reset_setting puts "-- set_setting(#{@setting_name.inspect}, #{@original_value})" @connection.set_setting(@setting_name, @original_value) end
set_new_setting()
click to toggle source
# File lib/active_record/safer_migrations/setting_helper.rb, line 36 def set_new_setting puts "-- set_setting(#{@setting_name.inspect}, #{@value})" @connection.set_setting(@setting_name, @value) end