verbose_migrations 1.0.0 → 1.0.1
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 +4 -0
- data/README.md +49 -2
- data/lib/verbose_migrations/ext.rb +22 -0
- data/lib/verbose_migrations/version.rb +1 -1
- data/lib/verbose_migrations.rb +2 -20
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46016287293e9f2266c8b54d6a517502c5574aef77538f1a1fd40328b91566eb
|
4
|
+
data.tar.gz: 3c73fac2184feaa70d1fc86697bddba6e7b86143943152ea55dadc9b1ed5f4db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83c379ae1c1fc8cc7cb1163253ce09740b627b10700a75997d242d0a7e11874e17fbff95ac6075d1646754904cef83727dbded3f636623bb0dbc4b268338b6f5
|
7
|
+
data.tar.gz: 8c4e5eb736d08ad411de79d987e7f4333a90070b3e5c138b23aaa6422d195323ef5bb6c3bc089f618073b80a47cb522a9d8e117b5b7355cf0bfff3fa087d2ede
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -41,14 +41,61 @@ $ gem install verbose_migrations
|
|
41
41
|
|
42
42
|
## Usage
|
43
43
|
|
44
|
+
Use the `verbose!` class method to enable debug logging. It accepts an optional log
|
45
|
+
`level:` and `logger:`.
|
46
|
+
|
44
47
|
```ruby
|
45
|
-
class SeedTagsFromPosts < ActiveRecord::Migration[7.
|
48
|
+
class SeedTagsFromPosts < ActiveRecord::Migration[7.2]
|
49
|
+
disable_ddl_transaction!
|
46
50
|
verbose!
|
47
51
|
|
48
52
|
def up
|
49
|
-
|
53
|
+
update_count = nil
|
54
|
+
batch_count = 0
|
55
|
+
|
56
|
+
until update_count == 0
|
57
|
+
batch_count += 1
|
58
|
+
update_count = exec_update(<<~SQL.squish, batch_count:, batch_size: 10_000)
|
59
|
+
WITH batch AS (
|
60
|
+
SELECT id, unnest(tags) AS tag_name
|
61
|
+
FROM posts
|
62
|
+
WHERE tags IS NOT NULL
|
63
|
+
LIMIT :batch_size
|
64
|
+
), inserted_tags AS (
|
65
|
+
INSERT INTO tags (name)
|
66
|
+
SELECT DISTINCT tag_name
|
67
|
+
FROM batch
|
68
|
+
ON CONFLICT (name) DO NOTHING
|
69
|
+
RETURNING id, name
|
70
|
+
)
|
71
|
+
INSERT INTO post_tags (post_id, tag_id)
|
72
|
+
SELECT batch.id, tags.id
|
73
|
+
FROM batch
|
74
|
+
JOIN tags ON tags.name = batch.tag_name
|
75
|
+
/* batch=:batch_count */
|
76
|
+
SQL
|
77
|
+
end
|
50
78
|
end
|
51
79
|
end
|
80
|
+
|
81
|
+
```
|
82
|
+
|
83
|
+
Before, you have a black box:
|
84
|
+
|
85
|
+
```
|
86
|
+
== 20240817010101 SeedTagsFromPosts: migrating ================================
|
87
|
+
== 20240817010101 SeedTagsFromPosts: migrated (42.0312s) =======================
|
88
|
+
```
|
89
|
+
|
90
|
+
After, you see progress:
|
91
|
+
|
92
|
+
```
|
93
|
+
== 20240817010101 SeedTagsFromPosts: migrating ================================
|
94
|
+
==> DEBUG -- : (2.2ms) WITH batch AS ( SELECT id, unnest(tags) AS tag_name FROM posts WHERE tags IS NOT NULL LIMIT 10000 ), inserted_tags AS ( INSERT INTO tags (name) SELECT DISTINCT tag_name FROM batch ON CONFLICT (name) DO NOTHING RETURNING id, name ) INSERT INTO post_tags (post_id, tag_id) SELECT batch.id, tags.id FROM batch JOIN tags ON tags.name = batch.tag_name /* batch=1 */
|
95
|
+
==> DEBUG -- : (1.1ms) WITH batch AS ( SELECT id, unnest(tags) AS tag_name FROM posts WHERE tags IS NOT NULL LIMIT 10000 ), inserted_tags AS ( INSERT INTO tags (name) SELECT DISTINCT tag_name FROM batch ON CONFLICT (name) DO NOTHING RETURNING id, name ) INSERT INTO post_tags (post_id, tag_id) SELECT batch.id, tags.id FROM batch JOIN tags ON tags.name = batch.tag_name /* batch=2 */
|
96
|
+
==> DEBUG -- : (1.3ms) WITH batch AS ( SELECT id, unnest(tags) AS tag_name FROM posts WHERE tags IS NOT NULL LIMIT 10000 ), inserted_tags AS ( INSERT INTO tags (name) SELECT DISTINCT tag_name FROM batch ON CONFLICT (name) DO NOTHING RETURNING id, name ) INSERT INTO post_tags (post_id, tag_id) SELECT batch.id, tags.id FROM batch JOIN tags ON tags.name = batch.tag_name /* batch=3 */
|
97
|
+
==> DEBUG -- : (1.7ms) ...
|
98
|
+
== 20240817010101 SeedTagsFromPosts: migrated (42.0312s) =======================
|
52
99
|
```
|
53
100
|
|
54
101
|
## Supported Rubies
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VerboseMigrations
|
4
|
+
module MigrationExtension
|
5
|
+
cattr_accessor :verbose_logger, default: nil
|
6
|
+
cattr_accessor :verbosity, default: nil
|
7
|
+
|
8
|
+
def verbose? = verbosity.present? && verbose_logger.present?
|
9
|
+
def verbose!(logger: ActiveRecord::Base.logger, level: Logger::DEBUG)
|
10
|
+
self.verbose_logger = logger
|
11
|
+
self.verbosity = level
|
12
|
+
end
|
13
|
+
|
14
|
+
def migrate(...)
|
15
|
+
verbosity_was, verbose_logger.level = verbose_logger.level, verbosity if verbose?
|
16
|
+
|
17
|
+
super
|
18
|
+
ensure
|
19
|
+
verbose_logger.level = verbosity_was if verbose?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/verbose_migrations.rb
CHANGED
@@ -4,26 +4,8 @@ require 'active_support'
|
|
4
4
|
require 'active_record'
|
5
5
|
require 'logger'
|
6
6
|
|
7
|
+
require_relative 'verbose_migrations/ext'
|
7
8
|
require_relative 'verbose_migrations/version'
|
8
9
|
require_relative 'verbose_migrations/railtie'
|
9
10
|
|
10
|
-
module VerboseMigrations
|
11
|
-
module MigrationExtension
|
12
|
-
cattr_accessor :verbose_logger, default: nil
|
13
|
-
cattr_accessor :verbosity, default: nil
|
14
|
-
|
15
|
-
def verbose? = verbosity.present? && verbose_logger.present?
|
16
|
-
def verbose!(logger: ActiveRecord::Base.logger, level: Logger::DEBUG)
|
17
|
-
self.verbose_logger = logger
|
18
|
-
self.verbosity = level
|
19
|
-
end
|
20
|
-
|
21
|
-
def migrate(...)
|
22
|
-
verbosity_was, verbose_logger.level = verbose_logger.level, verbosity if verbose?
|
23
|
-
|
24
|
-
super
|
25
|
-
ensure
|
26
|
-
verbose_logger.level = verbosity_was if verbose?
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
11
|
+
module VerboseMigrations; end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: verbose_migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zeke Gabrielse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- README.md
|
96
96
|
- SECURITY.md
|
97
97
|
- lib/verbose_migrations.rb
|
98
|
+
- lib/verbose_migrations/ext.rb
|
98
99
|
- lib/verbose_migrations/railtie.rb
|
99
100
|
- lib/verbose_migrations/version.rb
|
100
101
|
homepage: https://github.com/keygen-sh/verbose_migrations
|