departure 3.0.1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|