lib/backhoe.rb in backhoe-0.1.0 vs lib/backhoe.rb in backhoe-0.2.0

- old
+ new

@@ -4,23 +4,22 @@ module Backhoe mattr_accessor(:file_path) { "db/data.sql" } class << self - def dump - autodetect_adapter.dump + def dump file_path: Backhoe.file_path, **options + autodetect_adapter.new(database_config, file_path).dump **options end - def load - autodetect_adapter.load + def load file_path: Backhoe.file_path + autodetect_adapter.new(database_config, file_path).load end private def autodetect_adapter - klass = const_get(database_config["adapter"].camelize) - klass.new(database_config, file_path) + const_get(database_config["adapter"].camelize) end def database_config ActiveRecord::Base.configurations[Rails.env || "development"] end @@ -35,23 +34,29 @@ config["database"] end end class Mysql < Base - def dump + def dump skip_tables: [] mysqldump = `which mysqldump`.strip raise RuntimeError, "Cannot find mysqldump." if mysqldump.blank? - sh "#{mysqldump} --no-create-db --single-transaction --quick -e #{mysql_options} > #{file_path}" + sh "#{mysqldump} --no-create-db --single-transaction --quick -e #{skip_table_options(skip_tables)} #{mysql_options} > #{file_path}" end def load mysql = `which mysql`.strip raise RuntimeError, "Cannot find mysql." if mysql.blank? sh "#{mysql} #{mysql_options} < #{file_path}" end private + + def skip_table_options skip_tables + skip_tables.map do |table| + "--ignore-table=#{config["database"]}.#{table}" + end.join(" ") + end def mysql_options options = " -u #{config["username"]}" options += " -p'#{config["password"]}'" if config["password"] options += " -h #{config["host"]}" if config["host"] @@ -61,20 +66,20 @@ end Mysql2 = Mysql class Sqlite3 < Base - def dump + def dump **_ FileUtils.cp database, file_path end def load FileUtils.cp file_path, database end end class Postgresql < Base - def dump + def dump **_ pg_dump = `which pg_dump`.strip raise RuntimeError, "Cannot find pg_dump." if pg_dump.blank? sh "#{pg_dump} -c -f#{file_path} #{database}" end