Sha256: 17f98bfdca5d1ea1700f406818c503dbba185709208758e11a46b96ac44c0ac0
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
# frozen_string_literal: true # Effective::ContentReplacer.new.replace!("foo", "bar") module Effective class ContentReplacer attr_accessor :places def initialize(places = nil) @places = (places || default_places) end def default_places { action_text_rich_texts: [:body] } end def replace!(old_value, new_value) raise("old_value cannot contain a \' character") if old_value.include?("'") raise("new_value cannot contain a \' character") if new_value.include?("'") places.each do |table, columns| columns.each do |column| sql = "SELECT COUNT(*) FROM #{table} WHERE #{column} ILIKE '%#{old_value}%'" existing = ActiveRecord::Base.connection.execute(sql).first['count'].to_i puts "Replacing #{existing} occurrences of #{old_value} with #{new_value} in #{table}.#{column}" sql = "UPDATE #{table} SET #{column} = REPLACE(#{column}, '#{old_value}', '#{new_value}') WHERE #{column} ILIKE '%#{old_value}%'" ActiveRecord::Base.connection.execute(sql) end end true end def count(old_value) raise("old_value cannot contain a \' character") if old_value.include?("'") places.each do |table, columns| columns.each do |column| sql = "SELECT COUNT(*) FROM #{table} WHERE #{column} ILIKE '%#{old_value}%'" existing = ActiveRecord::Base.connection.execute(sql).first['count'].to_i puts "There are #{existing} occurrences of #{old_value} in #{table}.#{column}" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
effective_developer-0.8.4 | app/models/effective/content_replacer.rb |