diff --git a/lib/tasks/consul.rake b/lib/tasks/consul.rake index 0e3a5aad0..fcc23ff26 100644 --- a/lib/tasks/consul.rake +++ b/lib/tasks/consul.rake @@ -2,8 +2,10 @@ namespace :consul do desc "Runs tasks needed to upgrade to the latest version" task execute_release_tasks: ["settings:rename_setting_keys", "settings:add_new_settings", - "execute_release_2.1.0_tasks"] + "execute_release_2.2.0_tasks"] - desc "Runs tasks needed to upgrade from 2.0.1 to 2.1.0" - task "execute_release_2.1.0_tasks": [] + desc "Runs tasks needed to upgrade from 2.1.1 to 2.2.0" + task "execute_release_2.2.0_tasks": [ + "db:mask_ips" + ] end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 3c1d00166..c8b50e7cc 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -4,4 +4,15 @@ namespace :db do I18n.enforce_available_locales = false Tenant.switch(args[:tenant]) { load(Rails.root.join("db", "dev_seeds.rb")) } end + + desc "Mask IPs collected with Ahoy" + task mask_ips: :environment do + ApplicationLogger.new.info "Masking tracked IPs collected with Ahoy" + + Tenant.run_on_each do + Visit.find_each do |visit| + visit.update_column :ip, Ahoy.mask_ip(visit.ip) + end + end + end end diff --git a/spec/lib/tasks/db_spec.rb b/spec/lib/tasks/db_spec.rb new file mode 100644 index 000000000..084128d2e --- /dev/null +++ b/spec/lib/tasks/db_spec.rb @@ -0,0 +1,27 @@ +require "rails_helper" + +describe "rake db:mask_ips" do + before { Rake::Task["db:mask_ips"].reenable } + + it "mask IPs on all tenants" do + create(:visit, ip: "1.1.1.1") + create(:visit, ip: "1.1.1.2") + create(:visit, ip: "1.1.2.2") + + create(:tenant, schema: "myhometown") + + Tenant.switch("myhometown") do + create(:visit, ip: "1.1.1.1") + create(:visit, ip: "1.1.1.2") + create(:visit, ip: "1.1.3.3") + end + + Rake.application.invoke_task("db:mask_ips") + + expect(Visit.pluck(:ip)).to match_array %w[1.1.1.0 1.1.1.0 1.1.2.0] + + Tenant.switch("myhometown") do + expect(Visit.pluck(:ip)).to match_array %w[1.1.1.0 1.1.1.0 1.1.3.0] + end + end +end