trackguard 0.27.0 → 0.27.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/lib/tasks/trackguard.rake +17 -53
- data/lib/trackguard/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8e9860b115149813503e2063f8ed18c86fe82510c392a12a15eec6ecda39abbc
|
|
4
|
+
data.tar.gz: 34f0816d3a6193f71b985336fec9076e8c7889ff583c60165b0ddbcfc7a118da
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8bccd308249f6c1dc2413abeb2b4c0e133736b3e75bd8f325ca64d042e9989c6b6c826d2959d92912965974062cb73b031f74413587bb2439b48dc1eef5e1a50
|
|
7
|
+
data.tar.gz: 5d56636a21dd20f458b48047ea2749ad54994e11db96c70574148b267440a0da0bd05706cd6ca9d22e1192b1d7f7b498c0733a75bed260a088978e08886f152e
|
data/lib/tasks/trackguard.rake
CHANGED
|
@@ -72,41 +72,26 @@ namespace :trackguard do
|
|
|
72
72
|
next
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
base_version
|
|
76
|
-
|
|
77
|
-
template_dir = Trackguard::Engine.root.join("lib", "generators", "trackguard", "templates")
|
|
78
|
-
conn = ActiveRecord::Base.connection
|
|
75
|
+
base_version = File.basename(monolithic).match(/\A(\d{14})/)[1].to_i
|
|
76
|
+
template_dir = Trackguard::Engine.root.join("lib", "generators", "trackguard", "templates")
|
|
79
77
|
|
|
80
78
|
splits = [
|
|
81
|
-
[ base_version, "create_trackguard_visitors"
|
|
82
|
-
[ base_version + 1, "create_trackguard_visits"
|
|
83
|
-
[ base_version + 2, "create_trackguard_whitelisted_ips"
|
|
84
|
-
[ base_version + 3, "create_trackguard_blocked_user_agents"
|
|
85
|
-
[ base_version + 4, "create_trackguard_blocked_paths"
|
|
79
|
+
[ base_version, "create_trackguard_visitors" ],
|
|
80
|
+
[ base_version + 1, "create_trackguard_visits" ],
|
|
81
|
+
[ base_version + 2, "create_trackguard_whitelisted_ips" ],
|
|
82
|
+
[ base_version + 3, "create_trackguard_blocked_user_agents" ],
|
|
83
|
+
[ base_version + 4, "create_trackguard_blocked_paths" ]
|
|
86
84
|
]
|
|
87
85
|
|
|
88
|
-
|
|
89
|
-
# Tables absent from it are left for `rails generate trackguard:install` + `db:migrate`.
|
|
90
|
-
to_inject, to_defer = splits.partition { |_, _, table| monolithic_content.include?("create_table :#{table}") }
|
|
91
|
-
|
|
92
|
-
new_versions = to_inject.map { |ts, _, _| ts }.reject { |ts| ts == base_version }
|
|
93
|
-
create_list = to_inject.map { |ts, name, _| " db/migrate/#{ts}_#{name}.rb" }.join("\n")
|
|
86
|
+
create_list = splits.map { |ts, name| " db/migrate/#{ts}_#{name}.rb" }.join("\n")
|
|
94
87
|
|
|
95
88
|
puts "This will make the following changes to your application:"
|
|
96
89
|
puts ""
|
|
97
90
|
puts " Remove: db/migrate/#{File.basename(monolithic)}"
|
|
98
|
-
puts " Create:"
|
|
91
|
+
puts " Create (table/index creation guarded with if_not_exists):"
|
|
99
92
|
puts create_list
|
|
100
93
|
puts ""
|
|
101
|
-
puts "
|
|
102
|
-
puts " Update db/schema.rb if its version points at #{base_version}"
|
|
103
|
-
if to_defer.any?
|
|
104
|
-
puts ""
|
|
105
|
-
puts " Not in monolithic — deferred to install generator + db:migrate:"
|
|
106
|
-
to_defer.each { |_, name, _| puts " #{name}" }
|
|
107
|
-
end
|
|
108
|
-
puts ""
|
|
109
|
-
puts " Tables themselves are NOT touched. Bookkeeping only."
|
|
94
|
+
puts " Run `rails db:migrate` afterwards — existing tables and indexes are skipped safely."
|
|
110
95
|
puts ""
|
|
111
96
|
|
|
112
97
|
$stdout.print "Proceed? [y/N] "
|
|
@@ -118,44 +103,23 @@ namespace :trackguard do
|
|
|
118
103
|
|
|
119
104
|
puts ""
|
|
120
105
|
|
|
121
|
-
|
|
122
|
-
quoted = conn.quote(v.to_s)
|
|
123
|
-
unless conn.select_value("SELECT 1 FROM schema_migrations WHERE version = #{quoted}")
|
|
124
|
-
conn.execute("INSERT INTO schema_migrations (version) VALUES (#{quoted})")
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
last_injected = base_version
|
|
129
|
-
|
|
130
|
-
to_inject.each do |ts, name, _|
|
|
106
|
+
splits.each do |ts, name|
|
|
131
107
|
path = migrate_dir.join("#{ts}_#{name}.rb")
|
|
132
108
|
if path.exist?
|
|
133
109
|
puts " skip #{path.basename}"
|
|
134
110
|
else
|
|
135
|
-
|
|
136
|
-
|
|
111
|
+
raw = ERB.new(File.read(template_dir.join("#{name}.rb"))).result(binding)
|
|
112
|
+
guarded = raw
|
|
113
|
+
.gsub(/create_table (\S+) do/, 'create_table \1, if_not_exists: true do')
|
|
114
|
+
.gsub(/^(\s+add_index .+)$/, '\1, if_not_exists: true')
|
|
115
|
+
path.write(guarded)
|
|
137
116
|
puts " create #{path.basename}"
|
|
138
117
|
end
|
|
139
|
-
sm_insert.call(ts)
|
|
140
|
-
last_injected = ts
|
|
141
118
|
end
|
|
142
119
|
|
|
143
120
|
FileUtils.rm(monolithic)
|
|
144
121
|
puts " remove #{File.basename(monolithic)}"
|
|
145
|
-
# base_version stays in schema_migrations — it now belongs to create_trackguard_visitors
|
|
146
|
-
|
|
147
|
-
schema_path = Rails.root.join("db", "schema.rb")
|
|
148
|
-
if schema_path.exist? && last_injected != base_version
|
|
149
|
-
schema_content = schema_path.read
|
|
150
|
-
if schema_content.include?("version: #{base_version}")
|
|
151
|
-
schema_path.write(schema_content.sub("version: #{base_version}", "version: #{last_injected}"))
|
|
152
|
-
puts " update db/schema.rb: version #{base_version} → #{last_injected}"
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
122
|
|
|
156
|
-
|
|
157
|
-
puts "\nRun `rails generate trackguard:install && rails db:migrate` to create the remaining tables."
|
|
158
|
-
end
|
|
159
|
-
puts "\nDone. Run `rails db:migrate:status` to verify."
|
|
123
|
+
puts "\nDone. Run `rails db:migrate` to apply any missing migrations."
|
|
160
124
|
end
|
|
161
125
|
end
|
data/lib/trackguard/version.rb
CHANGED