Module: Stagehand::Database
- Extended by:
- Database
- Included in:
- Database
- Defined in:
- lib/stagehand/database.rb
Defined Under Namespace
Classes: ProductionProbe, StagingProbe
Constant Summary
collapse
- @@connection_name_stack =
[Rails.env.to_sym]
Instance Method Summary
collapse
Instance Method Details
#connected_to_production? ⇒ Boolean
#connected_to_staging? ⇒ Boolean
#each(&block) ⇒ Object
7
8
9
10
|
# File 'lib/stagehand/database.rb', line 7
def each(&block)
with_production_connection(&block) unless Configuration.single_connection?
with_staging_connection(&block)
end
|
#production_connection ⇒ Object
20
21
22
|
# File 'lib/stagehand/database.rb', line 20
def production_connection
ProductionProbe.connection
end
|
#production_database_name ⇒ Object
#production_database_versions ⇒ Object
#staging_connection ⇒ Object
24
25
26
|
# File 'lib/stagehand/database.rb', line 24
def staging_connection
StagingProbe.connection
end
|
#staging_database_name ⇒ Object
#staging_database_versions ⇒ Object
#transaction ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/stagehand/database.rb', line 70
def transaction
success = false
output = nil
ActiveRecord::Base.transaction do
Production::Record.transaction do
output = yield
success = true
end
raise ActiveRecord::Rollback unless success
end
return output
end
|
#with_connection(connection_name) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/stagehand/database.rb', line 52
def with_connection(connection_name)
different = current_connection_name != connection_name.to_sym
if different
@@connection_name_stack.push(connection_name.to_sym)
Rails.logger.debug "Connecting to #{current_connection_name}"
connect_to(current_connection_name)
end
yield connection_name
ensure
if different
@@connection_name_stack.pop
Rails.logger.debug "Restoring connection to #{current_connection_name}"
connect_to(current_connection_name)
end
end
|
#with_production_connection(&block) ⇒ Object
#with_staging_connection(&block) ⇒ Object