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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 316a34bc16b1eb01f85bf67eb0590083bb785e3fc7ec33c155c88f710598bff8
4
- data.tar.gz: 274cb339c6c5b66bb6a806eadf2c85c2b6e17a571e5a6afd7b0add98ab318b2f
3
+ metadata.gz: 8e9860b115149813503e2063f8ed18c86fe82510c392a12a15eec6ecda39abbc
4
+ data.tar.gz: 34f0816d3a6193f71b985336fec9076e8c7889ff583c60165b0ddbcfc7a118da
5
5
  SHA512:
6
- metadata.gz: 44e7c8a7af2af602c82b0deccee434b1f648669436191cd2d912445deaf4d5b1b8164e2129cb70b88fe60d626034825823decb3a020148b25a954a76a53e2158
7
- data.tar.gz: 808ada400efdf41eb5861ef9218f8cef8e90032ab8cda97b38b9492347d1ab96b4f558f1079c20767e711369e2c28ae62fe91028022cb36f2484efd9ca9c524a
6
+ metadata.gz: 8bccd308249f6c1dc2413abeb2b4c0e133736b3e75bd8f325ca64d042e9989c6b6c826d2959d92912965974062cb73b031f74413587bb2439b48dc1eef5e1a50
7
+ data.tar.gz: 5d56636a21dd20f458b48047ea2749ad54994e11db96c70574148b267440a0da0bd05706cd6ca9d22e1192b1d7f7b498c0733a75bed260a088978e08886f152e
@@ -72,41 +72,26 @@ namespace :trackguard do
72
72
  next
73
73
  end
74
74
 
75
- base_version = File.basename(monolithic).match(/\A(\d{14})/)[1].to_i
76
- monolithic_content = File.read(monolithic)
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", "trackguard_visitors" ],
82
- [ base_version + 1, "create_trackguard_visits", "trackguard_visits" ],
83
- [ base_version + 2, "create_trackguard_whitelisted_ips", "trackguard_whitelisted_ips" ],
84
- [ base_version + 3, "create_trackguard_blocked_user_agents", "trackguard_blocked_user_agents" ],
85
- [ base_version + 4, "create_trackguard_blocked_paths", "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
- # Only inject entries for tables the monolithic actually created.
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 " Update schema_migrations: add versions #{new_versions.join(', ')}" if new_versions.any?
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
- sm_insert = lambda do |v|
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
- content = ERB.new(File.read(template_dir.join("#{name}.rb"))).result(binding)
136
- path.write(content)
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
- if to_defer.any?
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
@@ -1,3 +1,3 @@
1
1
  module Trackguard
2
- VERSION = "0.27.0".freeze
2
+ VERSION = "0.27.1".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackguard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.27.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Rygielski