departure 3.0.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -16
- data/README.md +21 -6
- data/RELEASING.md +2 -2
- data/departure.gemspec +2 -2
- data/lib/active_record/connection_adapters/percona_adapter.rb +8 -5
- data/lib/departure/cli_generator.rb +0 -1
- data/lib/departure/connection_details.rb +2 -10
- data/lib/departure/version.rb +1 -1
- data/lib/lhm/column_with_sql.rb +4 -2
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6212b46cc9534ddacaefd8341432e124ccce6247
|
4
|
+
data.tar.gz: 4f99581bf9f9657ff07adf9684dc93d40b9dfa8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85c386d3d73919fe7e61d805835d5ddd8478fc8f204be09bd563151d67f1469424c7a89e40bdee579da483687f9602d071f80dd3bf9cdd547c78d2e80a91e325
|
7
|
+
data.tar.gz: aeef6570099eee655fc5eb7cd4b9dda7c0f7f4c482d575b83700ad8cbdbe63a1a914e173de1dc68467aa2b84fd2d3ba61d7608ed8a6ea03d422451a798e297c7
|
data/CHANGELOG.md
CHANGED
@@ -12,29 +12,31 @@ Please follow the format in [Keep a Changelog](http://keepachangelog.com/)
|
|
12
12
|
### Removed
|
13
13
|
### Fixed
|
14
14
|
|
15
|
-
## [
|
15
|
+
## [4.0.0] - 2017-06-12
|
16
16
|
|
17
17
|
### Added
|
18
|
+
### Changed
|
18
19
|
|
19
|
-
-
|
20
|
+
- Rename the gem from percona_migrator to departure.
|
20
21
|
|
21
|
-
### Changed
|
22
22
|
### Deprecated
|
23
23
|
### Removed
|
24
|
-
### Fixed
|
25
24
|
|
26
|
-
-
|
27
|
-
|
25
|
+
- Percona_migrator's deprecation warnings when installing and running the gem.
|
26
|
+
|
27
|
+
### Fixed
|
28
28
|
|
29
|
-
## [3.0.0] -
|
29
|
+
## [3.0.0] - 2016-04-07
|
30
30
|
|
31
31
|
### Added
|
32
32
|
|
33
|
+
- Support for ActiveRecord 4.2.x
|
34
|
+
- Support for Mysql2 4.x
|
33
35
|
- Allow passing any `pt-online-schema-change`'s arguments through the
|
34
36
|
`PERCONA_ARGS` env var when executing a migration with `rake db:migrate:up`
|
35
37
|
or `db:migrate:down`.
|
36
|
-
-
|
37
|
-
-
|
38
|
+
- Allow setting global percona arguments via gem configuration
|
39
|
+
- Filter MySQL's password from logs
|
38
40
|
|
39
41
|
### Changed
|
40
42
|
|
@@ -42,13 +44,6 @@ Please follow the format in [Keep a Changelog](http://keepachangelog.com/)
|
|
42
44
|
So far, this was purposely set to `none`. To keep this same behaviour
|
43
45
|
provide the `PERCONA_ARGS=--recursion-method=none` env var when running the
|
44
46
|
migration.
|
45
|
-
- Rename the gem from percona_migrator to departure.
|
46
|
-
|
47
|
-
### Removed
|
48
|
-
|
49
|
-
- Percona_migrator's deprecation warnings when installing and running the gem.
|
50
|
-
|
51
|
-
### Fixed
|
52
47
|
|
53
48
|
## [1.0.0] - 2016-11-30
|
54
49
|
|
data/README.md
CHANGED
@@ -26,6 +26,21 @@ Toolkit](https://www.percona.com/doc/percona-toolkit/2.0/pt-online-schema-change
|
|
26
26
|
|
27
27
|
`brew install percona-toolkit`
|
28
28
|
|
29
|
+
If when running a migration you see an error like:
|
30
|
+
|
31
|
+
```
|
32
|
+
PerconaMigrator::Error: Cannot connect to MySQL: Cannot connect to MySQL because
|
33
|
+
the Perl DBI module is not installed or not found.
|
34
|
+
```
|
35
|
+
|
36
|
+
You also need to install the DBI and DBD::MySQL modules from `cpan`.
|
37
|
+
|
38
|
+
```
|
39
|
+
$ sudo cpan
|
40
|
+
cpan> install DBI
|
41
|
+
cpan> install DBD::mysql
|
42
|
+
```
|
43
|
+
|
29
44
|
### Linux
|
30
45
|
|
31
46
|
#### Ubuntu/Debian based
|
@@ -97,7 +112,7 @@ You can specify any `pt-online-schema-change` arguments in global gem configurat
|
|
97
112
|
using `global_percona_args` option.
|
98
113
|
|
99
114
|
```ruby
|
100
|
-
|
115
|
+
Departure.configure do |config|
|
101
116
|
config.global_percona_args = '--chunk-time=1 --critical-load=55'
|
102
117
|
end
|
103
118
|
```
|
@@ -123,7 +138,7 @@ again in your next migration.
|
|
123
138
|
You can override any of the default values from an initializer:
|
124
139
|
|
125
140
|
```ruby
|
126
|
-
|
141
|
+
Departure.configure do |config|
|
127
142
|
config.tmp_path = '/tmp/'
|
128
143
|
end
|
129
144
|
```
|
@@ -135,20 +150,20 @@ It's strongly recommended to name it after this gems name, such as
|
|
135
150
|
|
136
151
|
When booting your Rails app, Departure extends the
|
137
152
|
`ActiveRecord::Migration#migrate` method to reset the connection and reestablish
|
138
|
-
it using the `
|
153
|
+
it using the `DepartureAdapter` instead of the one you defined in your
|
139
154
|
`config/database.yml`.
|
140
155
|
|
141
156
|
Then, when any migration DSL methods such as `add_column` or `create_table` are
|
142
157
|
executed, they all go to the
|
143
|
-
[
|
158
|
+
[DepartureAdapter](https://github.com/redbooth/departure/blob/master/lib/active_record/connection_adapters/departure_adapter.rb).
|
144
159
|
There, the methods that require `ALTER TABLE` SQL statements, like `add_column`,
|
145
160
|
are overriden to get executed with
|
146
|
-
[
|
161
|
+
[Departure::Runner](https://github.com/redbooth/departure/blob/master/lib/departure/runner.rb),
|
147
162
|
which deals with the `pt-online-schema-change` binary. All the others, like
|
148
163
|
`create_table`, are delegated to the ActiveRecord's built in Mysql2Adapter and
|
149
164
|
so they follow the regular path.
|
150
165
|
|
151
|
-
[
|
166
|
+
[Departure::Runner](https://github.com/redbooth/departure/blob/master/lib/departure/runner.rb)
|
152
167
|
spawns a new process that runs the `pt-online-schema-change` binary present in
|
153
168
|
the system, with the apropriate arguments for the generated SQL.
|
154
169
|
|
data/RELEASING.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Releasing
|
1
|
+
# Releasing Percona Migrator
|
2
2
|
|
3
3
|
All releases come from the master branch. All other branches won't be maintained
|
4
4
|
and will receive bug fix releases only.
|
@@ -7,7 +7,7 @@ In order to give support to a new major Rails version, we'll branch off of
|
|
7
7
|
master, name it following the Rails repo convention, such as `v4.2`, and
|
8
8
|
we'll keep it open for bug fixes.
|
9
9
|
|
10
|
-
1. Update `lib/
|
10
|
+
1. Update `lib/percona_migrator/version.rb` accordingly
|
11
11
|
2. Review the `CHANGELOG.md` and add a new section following the format
|
12
12
|
`[version] - YYYY-MM-DD`. We conform to the guidelines of
|
13
13
|
http://keepachangelog.com/
|
data/departure.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_runtime_dependency 'rails', '~> 4.
|
22
|
-
spec.add_runtime_dependency 'mysql2', '0.
|
21
|
+
spec.add_runtime_dependency 'rails', '~> 4.2.0'
|
22
|
+
spec.add_runtime_dependency 'mysql2', '~> 0.4.0'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
25
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -51,12 +51,11 @@ module ActiveRecord
|
|
51
51
|
|
52
52
|
ADAPTER_NAME = 'Percona'.freeze
|
53
53
|
|
54
|
-
def_delegators :mysql_adapter, :last_inserted_id, :each_hash,
|
55
|
-
:set_field_encoding, :full_version
|
54
|
+
def_delegators :mysql_adapter, :last_inserted_id, :each_hash, :set_field_encoding
|
56
55
|
|
57
56
|
def initialize(connection, _logger, connection_options, _config)
|
58
57
|
super
|
59
|
-
@
|
58
|
+
@prepared_statements = false
|
60
59
|
@mysql_adapter = connection_options[:mysql_adapter]
|
61
60
|
end
|
62
61
|
|
@@ -92,8 +91,8 @@ module ActiveRecord
|
|
92
91
|
true
|
93
92
|
end
|
94
93
|
|
95
|
-
def new_column(field, default,
|
96
|
-
Column.new(field, default,
|
94
|
+
def new_column(field, default, cast_type, sql_type = nil, null = true, collation = '', extra = '')
|
95
|
+
Column.new(field, default, cast_type, sql_type, null, collation, strict_mode?, extra)
|
97
96
|
end
|
98
97
|
|
99
98
|
# Adds a new index to the table
|
@@ -120,6 +119,10 @@ module ActiveRecord
|
|
120
119
|
def error_number(_exception)
|
121
120
|
end
|
122
121
|
|
122
|
+
def full_version
|
123
|
+
mysql_adapter.raw_connection.server_info[:version]
|
124
|
+
end
|
125
|
+
|
123
126
|
private
|
124
127
|
|
125
128
|
attr_reader :mysql_adapter
|
@@ -2,7 +2,6 @@ module Departure
|
|
2
2
|
# Holds the parameters of the DB connection and formats them to string
|
3
3
|
class ConnectionDetails
|
4
4
|
|
5
|
-
DEFAULT_PORT = 3306
|
6
5
|
# Constructor
|
7
6
|
#
|
8
7
|
# @param [Hash] connection parametes as used in #establish_conneciton
|
@@ -15,7 +14,7 @@ module Departure
|
|
15
14
|
#
|
16
15
|
# @return [String]
|
17
16
|
def to_s
|
18
|
-
@to_s ||= "-h #{host} -
|
17
|
+
@to_s ||= "-h #{host} -u #{user} #{password_argument}"
|
19
18
|
end
|
20
19
|
|
21
20
|
# TODO: Doesn't the abstract adapter already handle this somehow?
|
@@ -34,7 +33,7 @@ module Departure
|
|
34
33
|
# @return [String]
|
35
34
|
def password_argument
|
36
35
|
if password.present?
|
37
|
-
|
36
|
+
"-p #{password}"
|
38
37
|
else
|
39
38
|
''
|
40
39
|
end
|
@@ -67,12 +66,5 @@ module Departure
|
|
67
66
|
def password
|
68
67
|
ENV.fetch('PERCONA_DB_PASSWORD', connection_data[:password])
|
69
68
|
end
|
70
|
-
|
71
|
-
# Returns the database's port.
|
72
|
-
#
|
73
|
-
# @return [String]
|
74
|
-
def port
|
75
|
-
connection_data.fetch(:port, DEFAULT_PORT)
|
76
|
-
end
|
77
69
|
end
|
78
70
|
end
|
data/lib/departure/version.rb
CHANGED
data/lib/lhm/column_with_sql.rb
CHANGED
@@ -2,8 +2,8 @@ require 'forwardable'
|
|
2
2
|
|
3
3
|
module Lhm
|
4
4
|
|
5
|
-
# Abstracts the details of a table column definition when specified with a
|
6
|
-
#
|
5
|
+
# Abstracts the details of a table column definition when specified with a MySQL
|
6
|
+
# column definition string
|
7
7
|
class ColumnWithSql
|
8
8
|
extend Forwardable
|
9
9
|
|
@@ -53,9 +53,11 @@ module Lhm
|
|
53
53
|
#
|
54
54
|
# @return [column_factory]
|
55
55
|
def column
|
56
|
+
cast_type = ActiveRecord::Base.connection.lookup_cast_type(definition)
|
56
57
|
@column ||= self.class.column_factory.new(
|
57
58
|
name,
|
58
59
|
default_value,
|
60
|
+
cast_type,
|
59
61
|
definition,
|
60
62
|
null_value
|
61
63
|
)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: departure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Zayats
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2017-
|
16
|
+
date: 2017-06-12 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rails
|
@@ -21,28 +21,28 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - "~>"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 4.
|
24
|
+
version: 4.2.0
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - "~>"
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: 4.
|
31
|
+
version: 4.2.0
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: mysql2
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
35
35
|
requirements:
|
36
|
-
- -
|
36
|
+
- - "~>"
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: 0.
|
38
|
+
version: 0.4.0
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - "~>"
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.
|
45
|
+
version: 0.4.0
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: bundler
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|