Skip to content

Instantly share code, notes, and snippets.

@defsan
Created November 17, 2015 04:33
Show Gist options
  • Save defsan/f8dd085fd70c32f13986 to your computer and use it in GitHub Desktop.
Save defsan/f8dd085fd70c32f13986 to your computer and use it in GitHub Desktop.
Copy records between databases Posgres -> SQLite3
#
# Database.yml
#
development_ios:
# <<: *default
adapter: sqlite3
pool: 5
timeout: 5000
database: db/development_ios.sqlite3
development:
adapter: postgresql
encoding: unicode
database: development
pool: 5
username: postgres
password: postgres
#
# db.rake
#
desc "Migrate the database through scripts in db/migrate directory."
namespace :db do
task :migrate_ios do
DB_CONF = YAML::load(File.open(File.join(Rails.application.root,'config','database.yml')))
# db_conf = YAML::load(File.open(File.join(Rails.application.root,'config','database.yml')))
# puts db_conf["development_ios"]
# ActiveRecord::Base.establish_connection db_conf["development_ios"]
Rails.env = "development_ios"
ActiveRecord::Base.establish_connection DB_CONF["development_ios"]
Rake::Task["db:drop"].invoke
Rake::Task["db:create"].invoke
Rake::Task["db:schema:load"].invoke
Rails.env = "development"
ActiveRecord::Base.establish_connection DB_CONF["development"]
# Classes and shit
class IOSModel < ActiveRecord::Base
establish_connection DB_CONF["development_ios"]
end
# Copy record by record
[Person, Event, EventToPerson, PersonToPerson].each do |klass|
IOSModel.table_name = klass.table_name
klass.all.find_each do |record|
puts "#{klass} #{record.id}"
model = IOSModel.new
model.attributes = record.attributes
model.save!
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment