percona_migrator 0.1.1 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59ecf09f58f8aa46d64cf996a2a91a8acfa6dc8b
4
- data.tar.gz: 24daf3f8ba0bd51f1804b23857a0a94d4d345bfc
3
+ metadata.gz: 686c3a5b5ab858a587451fba1c6aa0b934f1cf9c
4
+ data.tar.gz: d01ece64414481d9b43a143a16f748ce134afc7a
5
5
  SHA512:
6
- metadata.gz: 1b1e0e1b42bcf64cd145a34882de830b572e9aabfcd3616a03bf7f81d1545864ca91951b1217f0bbf78191d41aeaa1b29761e3542fa7c110abff1823e4c845ff
7
- data.tar.gz: 02eae12611279a35d0cfaf243c1cda0a883c8ad91c792fea9ae11826b1b49e208eb6fa0da434f68706560fcc5ecf7535c5e9b3e366c406d010b53766aded8e27
6
+ metadata.gz: 104039977e6a970cad93bcb93e7ff628a2a00c0a10715543daaf9915fca08a1bf6e1643dc2e2e34e947f494f43abc9662c62a0a3e53ae9c98a0500abf9a9576e
7
+ data.tar.gz: f7e205f53c0cfd327dd293d0357b8e1e85b64ddf0a7a2cca14679a22607e3d5c8d1731757cb0ed1a25d83c38f31795fe23a74fc9cfd82af5cad1f42e67ce4e84
data/CHANGELOG.md CHANGED
@@ -6,30 +6,20 @@ Please follow the format in [Keep a Changelog](http://keepachangelog.com/)
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ### Added
10
- ### Changed
11
- ### Removed
12
- ### Fixed
13
-
14
- ## [0.1.1] - 2017-03-10
9
+ ## [1.0.0] - 2016-11-30
15
10
 
16
11
  ### Added
17
12
 
13
+ - Show pt-online-schema-change's stdout while the migration is running instead
14
+ of at then and all at once.
18
15
  - Store pt-online-schema-change's stderr to percona_migrator_error.log in the
19
16
  default Rails tmp folder.
20
- - Allow configuring the tmp directory where the error log gets written into.
21
- - Output a deprecation warning when installing and running the gem. It will be
22
- replaced by Departure soon.
23
-
24
- ### Changed
25
-
26
- - No longer a hard dependency on mysql2 0.3.20. Will accept 0.3.20 or any
27
- higher patch revisions.
28
-
29
- ### Fixed
30
-
31
- - Output pt-online-schema-change's stdout while the migration is running instead
32
- of all of it at the end.
17
+ - Allow configuring the tmp directory where the error log gets written into,
18
+ with the `tmp_path` configuration setting.
19
+ - Support for ActiveRecord 4.0. Adds the following migration methods:
20
+ - #rename_index, #change_column_null, #add_reference, #remove_reference,
21
+ #set_field_encoding, #add_timestamps, #remove_timestamps, #rename_table,
22
+ #rename_column
33
23
 
34
24
  ## [0.1.0.rc.7] - 2016-09-15
35
25
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Departure [![Build Status](https://travis-ci.org/redbooth/departure.svg?branch=master)](https://travis-ci.org/redbooth/percona_migrator) [![Code Climate](https://codeclimate.com/github/redbooth/percona_migrator/badges/gpa.svg)](https://codeclimate.com/github/redbooth/percona_migrator)
1
+ # Percona Migrator [![Build Status](https://travis-ci.org/redbooth/percona_migrator.svg?branch=master)](https://travis-ci.org/redbooth/percona_migrator) [![Code Climate](https://codeclimate.com/github/redbooth/percona_migrator/badges/gpa.svg)](https://codeclimate.com/github/redbooth/percona_migrator)
2
2
 
3
- Departure is an **ActiveRecord connection adapter** that allows running
3
+ Percona Migrator is an **ActiveRecord connection adapter** that allows running
4
4
  **MySQL online and non-blocking DDL** through `ActiveRecord::Migration` without needing
5
5
  to use a different DSL other than Rails' migrations DSL.
6
6
 
@@ -9,17 +9,9 @@ It uses `pt-online-schema-change` command-line tool of
9
9
  Toolkit](https://www.percona.com/doc/percona-toolkit/2.0/pt-online-schema-change.html)
10
10
  which runs MySQL alter table statements without downtime.
11
11
 
12
- ## Rename from "Percona Migrator"
13
-
14
- This project was formerly known as "Percona Migrator", but this incurs in an
15
- infringement of Percona's trade mark policy and thus has to be renamed. Said
16
- name is likely to cause confusion as to the source of the wrapper.
17
-
18
- The next major versions will use "Departure" as gem name.
19
-
20
12
  ## Installation
21
13
 
22
- Departure relies on `pt-online-schema-change` from [Percona
14
+ Percona Migrator relies on `pt-online-schema-change` from [Percona
23
15
  Toolkit](https://www.percona.com/doc/percona-toolkit/2.0/pt-online-schema-change.html)
24
16
 
25
17
  ### Mac
@@ -70,7 +62,7 @@ migration.
70
62
  ### LHM support
71
63
 
72
64
  If you moved to Soundcloud's [Lhm](https://github.com/soundcloud/lhm) already,
73
- we got you covered. Departure overrides Lhm's DSL so that all the alter
65
+ we got you covered. Percona Migrator overrides Lhm's DSL so that all the alter
74
66
  statements also go through `pt-online-schema-change` as well.
75
67
 
76
68
  You can keep your Lhm migrations and start using Rails migration's DSL back
@@ -91,7 +83,7 @@ It's strongly recommended to name it after this gems name, such as
91
83
 
92
84
  ## How it works
93
85
 
94
- When booting your Rails app, Departure extends the
86
+ When booting your Rails app, Percona Migrator extends the
95
87
  `ActiveRecord::Migration#migrate` method to reset the connection and reestablish
96
88
  it using the `PerconaAdapter` instead of the one you defined in your
97
89
  `config/database.yml`.
@@ -129,7 +121,8 @@ git commits and tags, and push the `.gem` file to
129
121
  ## Contributing
130
122
 
131
123
  Bug reports and pull requests are welcome on GitHub at
132
- https://github.com/redbooth/percona_migrator.
124
+ https://github.com/redbooth/percona_migrator. They need to be opened against
125
+ `master` or `v3.2` only if the changes fix a bug in Rails 3.2 apps.
133
126
 
134
127
  Please note that this project is released with a Contributor Code of Conduct. By
135
128
  participating in this project you agree to abide by its terms.
data/RELEASING.md ADDED
@@ -0,0 +1,17 @@
1
+ # Releasing Percona Migrator
2
+
3
+ All releases come from the master branch. All other branches won't be maintained
4
+ and will receive bug fix releases only.
5
+
6
+ In order to give support to a new major Rails version, we'll branch off of
7
+ master, name it following the Rails repo convention, such as `v4.2`, and
8
+ we'll keep it open for bug fixes.
9
+
10
+ 1. Update `lib/percona_migrator/version.rb` accordingly
11
+ 2. Review the `CHANGELOG.md` and add a new section following the format
12
+ `[version] - YYYY-MM-DD`. We conform to the guidelines of
13
+ http://keepachangelog.com/
14
+ 3. Commit the changes with the message `Prepare release VERSION`
15
+ 4. Execute the release rake task as `bundle exec rake release`. It creates the
16
+ tag, builds and pushes the gem to Rubygems.
17
+ 5. Announce it! :tada:
@@ -5,12 +5,14 @@ require 'percona_migrator'
5
5
  require 'forwardable'
6
6
 
7
7
  module ActiveRecord
8
- class Base
8
+ module ConnectionHandling
9
9
  # Establishes a connection to the database that's used by all Active
10
10
  # Record objects.
11
- def self.percona_connection(config)
11
+ def percona_connection(config)
12
12
  mysql2_connection = mysql2_connection(config)
13
13
 
14
+ config[:username] = 'root' if config[:username].nil?
15
+
14
16
  verbose = ActiveRecord::Migration.verbose
15
17
  percona_logger = PerconaMigrator::LoggerFactory.build(verbose: verbose)
16
18
  cli_generator = PerconaMigrator::CliGenerator.new(config)
@@ -45,7 +47,7 @@ module ActiveRecord
45
47
 
46
48
  ADAPTER_NAME = 'Percona'.freeze
47
49
 
48
- def_delegators :mysql_adapter, :last_inserted_id, :each_hash
50
+ def_delegators :mysql_adapter, :last_inserted_id, :each_hash, :set_field_encoding
49
51
 
50
52
  def initialize(connection, _logger, connection_options, _config)
51
53
  super
@@ -59,7 +61,7 @@ module ActiveRecord
59
61
  end
60
62
  alias :exec_update :exec_delete
61
63
 
62
- def exec_insert(sql, name, binds)
64
+ def exec_insert(sql, name, binds, pk = nil, sequence_name = nil)
63
65
  execute(to_sql(sql, binds), name)
64
66
  end
65
67
 
@@ -77,7 +79,7 @@ module ActiveRecord
77
79
  # Executes a SELECT query and returns an array of record hashes with the
78
80
  # column names as keys and column values as values.
79
81
  def select(sql, name = nil, binds = [])
80
- exec_query(sql, name, binds).to_a
82
+ exec_query(sql, name, binds)
81
83
  end
82
84
 
83
85
  # Returns true, as this adapter supports migrations
@@ -85,8 +87,8 @@ module ActiveRecord
85
87
  true
86
88
  end
87
89
 
88
- def new_column(field, default, type, null, collation)
89
- Column.new(field, default, type, null, collation)
90
+ def new_column(field, default, type, null, collation, extra = "")
91
+ Column.new(field, default, type, null, collation, extra)
90
92
  end
91
93
 
92
94
  # Adds a new index to the table
@@ -28,6 +28,10 @@ module PerconaMigrator
28
28
 
29
29
  # Generates the equivalent Percona's pt-online-schema-change command to the
30
30
  # given SQL statement
31
+ #
32
+ # --no-check-alter is used to allow running CHANGE COLUMN statements. For
33
+ # more details, check: www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html#cmdoption-pt-online-schema-change--[no]check-alter
34
+ #
31
35
  class CliGenerator # Command
32
36
  BASE_COMMAND = 'pt-online-schema-change'
33
37
  BASE_OPTIONS = %w(
@@ -35,6 +39,7 @@ module PerconaMigrator
35
39
  --statistics
36
40
  --recursion-method=none
37
41
  --alter-foreign-keys-method=auto
42
+ --no-check-alter
38
43
  )
39
44
 
40
45
  # Constructor
@@ -70,17 +70,11 @@ module PerconaMigrator
70
70
  #
71
71
  # @yield
72
72
  def logging
73
- log_deprecations
74
73
  log_started
75
74
  yield
76
75
  log_finished
77
76
  end
78
77
 
79
- def log_deprecations
80
- logger.write("\n")
81
- logger.write("[DEPRECATION] This gem has been renamed to Departure and will no longer be supported. Please switch to Departure as soon as possible.")
82
- end
83
-
84
78
  # Logs when the execution started
85
79
  def log_started
86
80
  logger.write("\n")
@@ -1,3 +1,3 @@
1
1
  module PerconaMigrator
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
@@ -15,17 +15,11 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = 'http://github.com/redbooth/percona_migrator'
16
16
  spec.license = 'MIT'
17
17
 
18
- spec.post_install_message = <<-MESSAGE
19
- ! The Percona_migrator gem has been deprecated and has been replaced by Departure.
20
- ! See: https://rubygems.org/gems/departure
21
- ! And: https://github.com/redbooth/departure
22
- MESSAGE
23
-
24
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
19
  spec.require_paths = ['lib']
26
20
 
27
- spec.add_runtime_dependency 'rails', '~>3.2.22'
28
- spec.add_runtime_dependency 'mysql2', '~>0.3.20'
21
+ spec.add_runtime_dependency 'rails', '>= 3.2.22', '~> 4.0.0'
22
+ spec.add_runtime_dependency 'mysql2', '0.3.20'
29
23
 
30
24
  spec.add_development_dependency 'bundler', '~> 1.10'
31
25
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: percona_migrator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Zayats
@@ -11,34 +11,40 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-03-10 00:00:00.000000000 Z
14
+ date: 2016-11-30 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - "~>"
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.2.22
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 4.0.0
23
26
  type: :runtime
24
27
  prerelease: false
25
28
  version_requirements: !ruby/object:Gem::Requirement
26
29
  requirements:
27
- - - "~>"
30
+ - - ">="
28
31
  - !ruby/object:Gem::Version
29
32
  version: 3.2.22
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 4.0.0
30
36
  - !ruby/object:Gem::Dependency
31
37
  name: mysql2
32
38
  requirement: !ruby/object:Gem::Requirement
33
39
  requirements:
34
- - - "~>"
40
+ - - '='
35
41
  - !ruby/object:Gem::Version
36
42
  version: 0.3.20
37
43
  type: :runtime
38
44
  prerelease: false
39
45
  version_requirements: !ruby/object:Gem::Requirement
40
46
  requirements:
41
- - - "~>"
47
+ - - '='
42
48
  - !ruby/object:Gem::Version
43
49
  version: 0.3.20
44
50
  - !ruby/object:Gem::Dependency
@@ -141,6 +147,7 @@ files:
141
147
  - Gemfile
142
148
  - LICENSE.txt
143
149
  - README.md
150
+ - RELEASING.md
144
151
  - Rakefile
145
152
  - bin/console
146
153
  - bin/setup
@@ -168,10 +175,7 @@ homepage: http://github.com/redbooth/percona_migrator
168
175
  licenses:
169
176
  - MIT
170
177
  metadata: {}
171
- post_install_message: |2
172
- ! The Percona_migrator gem has been deprecated and has been replaced by Departure.
173
- ! See: https://rubygems.org/gems/departure
174
- ! And: https://github.com/redbooth/departure
178
+ post_install_message:
175
179
  rdoc_options: []
176
180
  require_paths:
177
181
  - lib
@@ -187,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
191
  version: '0'
188
192
  requirements: []
189
193
  rubyforge_project:
190
- rubygems_version: 2.6.10
194
+ rubygems_version: 2.4.5.1
191
195
  signing_key:
192
196
  specification_version: 4
193
197
  summary: pt-online-schema-change runner for ActiveRecord migrations