Skip to content

Commit 3ea8c44

Browse files
authored
Merge pull request departurerb#55 from mavenlink/fix-alternating-departure-non-departure-migration-issue
Add ConnectionBase subclass for connecting with original adapter
2 parents 5a3bf39 + d8fd889 commit 3ea8c44

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

lib/departure/connection_base.rb

+2
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ def self.establish_connection(config = nil)
66
end
77
end
88
end
9+
10+
class OriginalAdapterConnection < ConnectionBase; end
911
end

lib/departure/migration.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def reconnect_with_percona
8181
# enabled in a previous migration.
8282
def reconnect_without_percona
8383
return unless connection_config[:adapter] == 'percona'
84-
Departure::ConnectionBase.establish_connection(connection_config.merge(adapter: original_adapter))
84+
Departure::OriginalAdapterConnection.establish_connection(connection_config.merge(adapter: original_adapter))
8585
end
8686

8787
private

spec/integration_spec.rb

+17-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
require 'spec_helper'
2+
require 'fixtures/migrate/0022_add_timestamp_on_comments'
23

34
# TODO: Handle #change_table syntax
45
describe Departure, integration: true do
56
class Comment < ActiveRecord::Base; end
67

7-
let(:migration_fixtures) do
8-
ActiveRecord::MigrationContext.new([MIGRATION_FIXTURES], ActiveRecord::SchemaMigration).migrations
9-
end
8+
let(:migration_paths) { [MIGRATION_FIXTURES] }
9+
let(:migration_context) { ActiveRecord::MigrationContext.new(migration_paths, ActiveRecord::SchemaMigration) }
10+
let(:migration_fixtures) { migration_context.migrations }
1011

1112
let(:direction) { :up }
1213
let(:pool) { ActiveRecord::Base.connection_pool }
@@ -204,4 +205,17 @@ class Comment < ActiveRecord::Base; end
204205
end
205206
end
206207
end
208+
209+
context 'when there are migrations that do not use departure' do
210+
let(:migration) { AddTimestampOnComments }
211+
212+
before do
213+
allow(migration).to receive(:uses_departure).and_return(false)
214+
end
215+
216+
it 'uses Departure::OriginalConnectionAdapter' do
217+
expect(Departure::OriginalAdapterConnection).to receive(:establish_connection)
218+
migration_context.run(direction, 22)
219+
end
220+
end
207221
end

0 commit comments

Comments
 (0)