This repository has been archived by the owner on Apr 17, 2018. It is now read-only.
/
database.rake
111 lines (91 loc) · 3.58 KB
/
database.rake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
require 'dm-rails/setup'
require 'dm-rails/storage'
def migration_paths
Rails.configuration.paths['db/migrate'].map {|path| path+"/*.rb"}
end
namespace :db do
desc 'Create the database, load the schema, and initialize with the seed data'
task :setup => [ 'db:create', 'db:automigrate', 'db:seed' ]
namespace :create do
desc 'Create all the local databases defined in config/database.yml'
task :all => :environment do
Rails::DataMapper.storage.create_all
end
end
desc "Create all local databases defined for the current Rails.env"
task :create => :environment do
Rails::DataMapper.storage.create_environment(Rails::DataMapper.configuration.repositories[Rails.env])
end
namespace :drop do
desc 'Drop all the local databases defined in config/database.yml'
task :all => :environment do
Rails::DataMapper.storage.drop_all
end
end
desc "Drop all local databases defined for the current Rails.env"
task :drop => :environment do
Rails::DataMapper.storage.drop_environment(Rails::DataMapper.configuration.repositories[Rails.env])
end
desc 'Perform destructive automigration of all repositories in the current Rails.env'
task :automigrate => :environment do
require 'dm-migrations'
Rails::DataMapper.configuration.repositories[Rails.env].each do |repository, config|
::DataMapper.auto_migrate!(repository.to_sym)
puts "[datamapper] Finished auto_migrate! for :#{repository} repository '#{config['database']}'"
end
end
desc 'Perform non destructive automigration of all repositories in the current Rails.env'
task :autoupgrade => :environment do
require 'dm-migrations'
Rails::DataMapper.configuration.repositories[Rails.env].each do |repository, config|
::DataMapper.auto_upgrade!(repository.to_sym)
puts "[datamapper] Finished auto_upgrade! for :#{repository} repository '#{config['database']}'"
end
end
desc 'Load the seed data from db/seeds.rb'
task :seed => :environment do
seed_file = File.join(Rails.root, 'db', 'seeds.rb')
load(seed_file) if File.exist?(seed_file)
end
namespace :migrate do
task :load => :environment do
require 'dm-migrations/migration_runner'
FileList[migration_paths].each do |migration|
load migration
end
end
desc 'Migrate up using migrations'
task :up, [:version] => [:load] do |t, args|
::DataMapper::MigrationRunner.migrate_up!(args[:version])
end
desc 'Migrate down using migrations'
task :down, [:version] => [:load] do |t, args|
::DataMapper::MigrationRunner.migrate_down!(args[:version])
end
end
desc 'Migrate the database to the latest version'
task :migrate do
migrate_task = if migration_paths.all? { |path| Dir[path].empty? }
'db:autoupgrade'
else
'db:migrate:up'
end
Rake::Task[migrate_task].invoke
end
namespace :sessions do
desc "Creates the sessions table for DataMapperStore"
task :create => :environment do
require 'dm-rails/session_store'
Rails::DataMapper::SessionStore::Session.auto_migrate!
database = Rails::DataMapper.configuration.repositories[Rails.env]['database']
puts "Created '#{database}.sessions'"
end
desc "Clear the sessions table for DataMapperStore"
task :clear => :environment do
require 'dm-rails/session_store'
Rails::DataMapper::SessionStore::Session.destroy!
database = Rails::DataMapper.configuration.repositories[Rails.env]['database']
puts "Deleted entries from '#{database}.sessions'"
end
end
end