strong_migrations 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c88f42b80893537a01f6af06975ecfb6f84c4fcf
4
- data.tar.gz: '0439465af1f34f52226a12e86a049cf0ecaf6ae2'
3
+ metadata.gz: 85bce3e28cb77bab6bea2ff5fe300c7e5b7b7b26
4
+ data.tar.gz: aa648b6c6cb9744cfd9bad3fa0af93544e62d056
5
5
  SHA512:
6
- metadata.gz: 6111b78f6cd45d6f94adcd03fb2759c2ac2f6e88680cd4e91bfc5559b3c1def917e9444295f31e75d1fa0387a1a79c59b55ea717c344dfaa424d2a382fb21814
7
- data.tar.gz: 7436c59cb398da6e8c010e4eeeef1642820a040fa72ea4661374739fb27214e05415d24b1b91e3799c5a4b2fc92fa9f27fb66425997a32811554f1d6275ea83e
6
+ metadata.gz: 0327c5add8b8d83026e1d2044740f115918c3ec588db1c09bf97130354bd812c59ac78ab0f9d2f13cff12c84593e5406b4a05d1fa1a426ed478869adcc7c94ba
7
+ data.tar.gz: 335feda7ce4b8fd0a55a52ea6272ac413e6bbffe1b308f2db9fc758ff0a0568a0a6a4b0e238dce5490979caee04568a4ab51c81b5a3c26efcc82d8db0d022b2a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.1.9
2
+
3
+ - Added `start_after` option
4
+
1
5
  ## 0.1.8
2
6
 
3
7
  - Fixed error with `create_table`
data/README.md CHANGED
@@ -52,7 +52,10 @@ class AddSomeColumnToUsers < ActiveRecord::Migration
52
52
  # 2
53
53
  commit_db_transaction
54
54
 
55
- # 3
55
+ # 3.a (Rails 5+)
56
+ User.in_batches.update_all some_column: "default_value"
57
+
58
+ # 3.b (Rails < 5)
56
59
  User.find_in_batches do |users|
57
60
  User.where(id: users.map(&:id)).update_all some_column: "default_value"
58
61
  end
@@ -142,6 +145,14 @@ class MySafeMigration < ActiveRecord::Migration
142
145
  end
143
146
  ```
144
147
 
148
+ ## Existing Migrations
149
+
150
+ To mark migrations as safe that were created before installing this gem, create an initializer with:
151
+
152
+ ```ruby
153
+ StrongMigrations.start_after = 20170101000000
154
+ ```
155
+
145
156
  ## Dangerous Tasks
146
157
 
147
158
  For safety, dangerous rake tasks are disabled in production - `db:drop`, `db:reset`, `db:schema:load`, and `db:structure:load`. To get around this, use:
@@ -167,6 +178,14 @@ Columns can flip order in `db/schema.rb` when you have multiple developers. One
167
178
  task "db:schema:dump": "strong_migrations:alphabetize_columns"
168
179
  ```
169
180
 
181
+ ## Analyze Tables (Postgres)
182
+
183
+ Analyze tables automatically (to update planner statistics) after an index is added. Create an initializer with:
184
+
185
+ ```ruby
186
+ StrongMigrations.auto_analyze = true
187
+ ```
188
+
170
189
  ## Credits
171
190
 
172
191
  Thanks to Bob Remeika and David Waller for the [original code](https://github.com/foobarfighter/safe-migrations).
@@ -14,7 +14,7 @@ module StrongMigrations
14
14
  end
15
15
 
16
16
  def method_missing(method, *args, &block)
17
- unless @safe || ENV["SAFETY_ASSURED"] || is_a?(ActiveRecord::Schema) || @direction == :down
17
+ unless @safe || ENV["SAFETY_ASSURED"] || is_a?(ActiveRecord::Schema) || @direction == :down || version_safe?
18
18
  case method
19
19
  when :remove_column
20
20
  raise_error :remove_column
@@ -31,14 +31,14 @@ module StrongMigrations
31
31
  if columns.is_a?(Array) && columns.size > 3
32
32
  raise_error :add_index_columns
33
33
  end
34
- options = args[2]
35
- if postgresql? && !(options && options[:algorithm] == :concurrently) && !@new_tables.to_a.include?(args[0].to_s)
34
+ options = args[2] || {}
35
+ if postgresql? && options[:algorithm] != :concurrently && !@new_tables.to_a.include?(args[0].to_s)
36
36
  raise_error :add_index
37
37
  end
38
38
  when :add_column
39
39
  type = args[2]
40
- options = args[3]
41
- raise_error :add_column_default if options && !options[:default].nil?
40
+ options = args[3] || {}
41
+ raise_error :add_column_default unless options[:default].nil?
42
42
  raise_error :add_column_json if type.to_s == "json"
43
43
  when :change_column
44
44
  raise_error :change_column
@@ -75,6 +75,10 @@ module StrongMigrations
75
75
  %w(PostgreSQL PostGIS).include?(connection.adapter_name)
76
76
  end
77
77
 
78
+ def version_safe?
79
+ version && version <= StrongMigrations.start_after
80
+ end
81
+
78
82
  def raise_error(message_key)
79
83
  message =
80
84
  case message_key
@@ -1,3 +1,3 @@
1
1
  module StrongMigrations
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
@@ -6,9 +6,10 @@ require "strong_migrations/railtie" if defined?(Rails)
6
6
 
7
7
  module StrongMigrations
8
8
  class << self
9
- attr_accessor :auto_analyze
9
+ attr_accessor :auto_analyze, :start_after
10
10
  end
11
11
  self.auto_analyze = false
12
+ self.start_after = 0
12
13
  end
13
14
 
14
15
  ActiveRecord::Migration.send(:prepend, StrongMigrations::Migration)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strong_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Remeika
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-05-31 00:00:00.000000000 Z
13
+ date: 2017-06-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord