class Wordmove::SqlAdapter::Default

Attributes

dest_config[R]
source_config[R]
sql_content[W]
sql_path[R]

Public Class Methods

new(sql_path, source_config, dest_config) click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 7
def initialize(sql_path, source_config, dest_config)
  @sql_path = sql_path
  @source_config = source_config
  @dest_config = dest_config
end

Public Instance Methods

adapt!() click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 17
def adapt!
  replace_vhost!
  replace_wordpress_path!
  write_sql!
end
replace_field!(source_field, dest_field) click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 35
def replace_field!(source_field, dest_field)
  return false unless source_field && dest_field

  serialized_replace!(source_field, dest_field)
  simple_replace!(source_field, dest_field)
end
replace_vhost!() click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 23
def replace_vhost!
  source_vhost = source_config[:vhost]
  dest_vhost = dest_config[:vhost]
  replace_field!(source_vhost, dest_vhost)
end
replace_wordpress_path!() click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 29
def replace_wordpress_path!
  source_path = source_config[:wordpress_absolute_path] || source_config[:wordpress_path]
  dest_path = dest_config[:wordpress_absolute_path] || dest_config[:wordpress_path]
  replace_field!(source_path, dest_path)
end
serialized_replace!(source_field, dest_field) click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 42
def serialized_replace!(source_field, dest_field)
  length_delta = source_field.length - dest_field.length

  sql_content.gsub!(/s:(\d+):([\\]*['"])(.*?)\2;/) do |_|
    length = Regexp.last_match(1).to_i
    delimiter = Regexp.last_match(2)
    string = Regexp.last_match(3)

    string.gsub!(/#{Regexp.escape(source_field)}/) do |_|
      length -= length_delta
      dest_field
    end

    %(s:#{length}:#{delimiter}#{string}#{delimiter};)
  end
end
simple_replace!(source_field, dest_field) click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 59
def simple_replace!(source_field, dest_field)
  sql_content.gsub!(source_field, dest_field)
end
sql_content() click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 13
def sql_content
  @sql_content ||= File.open(sql_path).read
end
write_sql!() click to toggle source
# File lib/wordmove/sql_adapter/default.rb, line 63
def write_sql!
  File.open(sql_path, 'w') { |f| f.write(sql_content) }
end