forked from RomanTurner/rephlex-generated-poc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstuff_cli.rb
83 lines (71 loc) · 2.07 KB
/
stuff_cli.rb
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
require "thor"
require "sequel"
require "pry"
require "logger"
module StuffCLI
class Database < Thor
include Thor::Actions
desc "seed", "Run db/seeds/seed.rb"
def seed
puts run("ruby db/seeds/seed.rb")
end
desc "create", "Create database named after application name"
option :env
def create(name)
db_name = options[:env] ? options[:env] + name : name
Sequel.connect(adapter: "postgres") do |db|
db.loggers << Logger.new($stdout)
db.execute "DROP DATABASE IF EXISTS #{db_name}"
db.execute "CREATE DATABASE #{db_name}"
end
rescue LoadError
puts set_color "You are not in a project directory", :magenta, :bold
end
desc "test_up", "Migrate test database to latest version"
def test_up
migrate("test", nil)
end
desc "test_down", "Migrate test database all the way down"
def test_down
migrate("test", 0)
end
desc "test_bounce",
"Migrate test database all the way down and then back up"
def test_bounce
migrate("test", 0)
Sequel::Migrator.apply(DB, "migrate")
end
desc "dev_up", "Migrate development database to latest version"
def dev_up
migrate("development", nil)
end
desc "dev_down", "Migrate development database to all the way down"
def dev_down
migrate("development", 0)
end
desc "test_task", "test task"
def test_task
binding.pry
end
desc "dev_bounce",
"Migrate development database all the way down and then back up"
def dev_bounce
migrate("development", 0)
Sequel::Migrator.apply(DB, "./db/migrate")
end
desc "prod_up", "Migrate production database to latest version"
def prod_up
migrate("production", nil)
end
no_tasks do
def migrate(env, version)
ENV["RACK_ENV"] = env
require_relative "../../config/db"
require "logger"
Sequel.extension :migration
DB.loggers << Logger.new($stdout) if DB.loggers.empty?
Sequel::Migrator.apply(DB, "db/migrate", version)
end
end
end
end