Skip to content

Instantly share code, notes, and snippets.

@kazukeyan
Created January 20, 2012 02:00
Show Gist options
  • Save kazukeyan/1644523 to your computer and use it in GitHub Desktop.
Save kazukeyan/1644523 to your computer and use it in GitHub Desktop.
data migration from "lib/migration/*.rb"
namespace :db do
namespace :migrate do
Dir::glob("lib/migration/*.rb").each do |file|
target = File.basename(file, ".rb")
desc "migration task from \"lib/migration/#{target}.rb\""
task target => :environment do
require file
klass = target.split("_").map {|word| word.capitalize}.join("")
data_source = YAML.load_file(Rails.root.join('config', 'old_migration_database.yml'))
data_source.each do |system, ds|
klass = target.split("_").map {|word| word.capitalize}.join("")
display_message("System:#{system} #{klass} Begin -- #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S.%N")}")
data_obj = eval("#{klass}.new(system, ds)")
data_obj.migration
display_message("System:#{system} #{klass} End -- #{DateTime.now.strftime("%Y-%m-%d %H:%M:%S.%N")}")
end
end
end
desc "migration all data from old_migration_database"
task :all => :environment do
Dir::glob("lib/migration/*.rb").each do |file|
target = File.basename(file, ".rb")
Rake::Task["db:migrate:#{target}"].invoke
end
end
namespace :all do
desc "migration all data from old_migration_database"
task :reset => :environment do
Rake::Task["db:migrate:reset"].invoke
require 'db/seeds'
Rake::Task["db:migrate:all"].invoke
end
end
end
end
@kazukeyan
Copy link
Author

データ移行用rake task
新旧データベースのデータ移行に利用する
old_migration_database.ymlに適当なデータソース定義を、lib/migration/以下にデータ移行クラスファイルを配置

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment