-
Notifications
You must be signed in to change notification settings - Fork 2
/
Rakefile
121 lines (102 loc) · 3.83 KB
/
Rakefile
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
112
113
114
115
116
117
118
119
120
121
APP_ROOT = File.expand_path File.dirname(__FILE__)
if ENV['RACK_ENV'] == nil
env = "development"
else
env = ENV['RACK_ENV']
end
namespace :app do
desc "Starts application."
task :start do
puts "Starting application in #{env} mode..."
system("thin -C config/#{env}.yml start")
puts "Application started"
end
desc "Stops application."
task :stop do
puts "Stopping application in #{env} mode..."
system("thin -C config/#{env}.yml stop")
puts "Application stopped"
end
desc "Restarts application."
task :restart do
puts "Restarting application in #{env} mode..."
system("thin -C config/#{env}.yml restart")
puts "Application restarted"
end
desc "Starts application in debug mode"
task :debug do
puts "Starting application in debug mode..."
ENV['RACK_ENV'] = 'debug'
system("thin -C config/debug.yml start")
end
end
task :environment do
require(File.join(APP_ROOT, 'app'))
end
namespace :db do
task :load_config => :environment do
Sequel.extension :migration
end
namespace :schema do
desc "drops the schema, using schema.rb"
task :drop => [:load_config] do
eval(File.read(File.join(APP_ROOT, 'db', 'schema.rb'))).apply(DB, :down)
end
desc "loads the schema from db/schema.rb"
task :load => :load_config do
eval(File.read(File.join(APP_ROOT, 'db', 'schema.rb'))).apply(DB, :up)
#Migrator = Sequel::Migrator.new(DB)
latest_version = Sequel::IntegerMigrator.new(DB, File.join(APP_ROOT, 'db', 'migrate')).current
#Migrator.set_migration_version(DB, latest_version)
Sequel::IntegerMigrator.new(DB, File.join(APP_ROOT, 'db', 'migrate'))
puts "Database schema loaded version #{latest_version}"
end
desc "Returns current schema version"
task :version => :load_config do
puts "Current Schema Version: #{latest_version = Sequel::IntegerMigrator.new(DB, File.join(APP_ROOT, 'db', 'migrate')).current}"
end
end
desc "Migrate the database through scripts in db/migrate and db/schema.rb. Target specific version with VERSION=x. Turn off output with VERBOSE=false."
task :migrate => :load_config do
Sequel::Migrator.apply(DB, File.join(APP_ROOT, 'db', 'migrate'))
Rake::Task["db:schema:version"].invoke
end
namespace :migrate do
desc 'Rollbacks the database one migration and re migrate up. If you want to rollback more than one step, define STEP=x. Target specific version with VERSION=x.'
task :redo => :load_config do
Rake::Task["db:rollback"].invoke
Rake::Task["db:migrate"].invoke
end
desc 'Runs the "up" for a given migration VERSION.'
task :up => :load_config do
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
raise "VERSION is required" unless version
puts "migrating up to version #{version}"
Sequel::Migrator.apply(DB, File.join(APP_ROOT, 'db', 'migrate'), version)
end
desc 'Runs the "down" for a given migration VERSION.'
task :down => :load_config do
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
latest_version = Sequel::IntegerMigrator.new(DB, File.join(APP_ROOT, 'db', 'migrate')).current
down_version = current_version - step
down_version = 0 if down_version < 0
puts "migrating down to version #{down_version}"
Sequel::Migrator.apply(DB, File.join(APP_ROOT, 'db', 'migrate'), down_version)
end
end
desc 'Rolls the schema back to the previous version. Specify the number of steps with STEP=n'
task :rollback => :load_config do
Rake::Task["db:migrate:down"].invoke
end
desc 'Drops and recreates the database from db/schema.rb for the current environment.'
task :reset => ['db:schema:drop', 'db:schema:load']
end
namespace :default do
desc "Help"
task :help do
p "Run rake -T for task list"
end
task :all => [:help]
end
desc "Default Task"
task :default => 'default:all'