communard 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/communard/configuration.rb +9 -4
- data/lib/communard/context.rb +14 -4
- data/lib/communard/maintenance.rb +6 -6
- data/lib/communard/rake.rb +24 -20
- data/lib/communard/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 254deb5e41f164f82d78f8e790607c3043914a54
|
4
|
+
data.tar.gz: b06a55879156c64e6118a3d02f068719d0c94770
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18d3919f1171c3285de8f6b93e7c2c07659ac99bec515c093dd4b93513c28292407b39573bff10baae2a9951817a238a1ce5923b26dd6e091a5030b8ad409773
|
7
|
+
data.tar.gz: 9e466e1fba88680672d88289dc5493aaa5bd8caf7ced131582025b9ec2f3eaa266f6767d2b185214cb68bd39a1a6cffc8dbe2f9639ffdde13e77ed9573e7db4a
|
@@ -4,15 +4,20 @@ require "pathname"
|
|
4
4
|
module Communard
|
5
5
|
class Configuration
|
6
6
|
|
7
|
-
attr_accessor :environment, :root, :logger
|
7
|
+
attr_accessor :environment, :root, :logger, :dump_same_db
|
8
8
|
|
9
9
|
def initialize
|
10
|
-
self.environment
|
11
|
-
self.root
|
12
|
-
self.logger
|
10
|
+
self.environment = ENV["RACK_ENV"] || ENV["RUBY_ENV"] || ENV["RACK_ENV"] || "development"
|
11
|
+
self.root = Pathname(Dir.pwd)
|
12
|
+
self.logger = default_logger
|
13
|
+
self.dump_same_db = false
|
13
14
|
yield self if block_given?
|
14
15
|
end
|
15
16
|
|
17
|
+
def dump_same_db!
|
18
|
+
self.dump_same_db = true
|
19
|
+
end
|
20
|
+
|
16
21
|
private
|
17
22
|
|
18
23
|
def default_logger
|
data/lib/communard/context.rb
CHANGED
@@ -30,7 +30,13 @@ module Communard
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def create_database(env: environment)
|
33
|
-
run_without_database("CREATE DATABASE
|
33
|
+
run_without_database("CREATE DATABASE %{database_name}", env: env)
|
34
|
+
rescue Sequel::DatabaseError => error
|
35
|
+
if /database (.*) already exists/ === error.message
|
36
|
+
logger.info "Database #{$1} already exists, which is fine."
|
37
|
+
else
|
38
|
+
raise
|
39
|
+
end
|
34
40
|
end
|
35
41
|
|
36
42
|
def drop_database(env: environment)
|
@@ -39,7 +45,7 @@ module Communard
|
|
39
45
|
end
|
40
46
|
|
41
47
|
def migrate(target: nil, env: environment)
|
42
|
-
maintenance(env: env).migrate(target: target)
|
48
|
+
maintenance(env: env).migrate(target: target, dump_same_db: configuration.dump_same_db)
|
43
49
|
end
|
44
50
|
|
45
51
|
def seed(env: environment)
|
@@ -47,7 +53,7 @@ module Communard
|
|
47
53
|
end
|
48
54
|
|
49
55
|
def rollback(step: 1, env: environment)
|
50
|
-
maintenance(env: env).rollback(step: step)
|
56
|
+
maintenance(env: env).rollback(step: step, dump_same_db: configuration.dump_same_db)
|
51
57
|
end
|
52
58
|
|
53
59
|
def load_schema(env: environment)
|
@@ -55,7 +61,7 @@ module Communard
|
|
55
61
|
end
|
56
62
|
|
57
63
|
def dump_schema(env: environment)
|
58
|
-
maintenance(env: env).dump_schema
|
64
|
+
maintenance(env: env).dump_schema(dump_same_db: configuration.dump_same_db)
|
59
65
|
end
|
60
66
|
|
61
67
|
def status(env: environment)
|
@@ -65,6 +71,10 @@ module Communard
|
|
65
71
|
def run_without_database(cmd, env: environment)
|
66
72
|
opts = options(env: env).dup
|
67
73
|
database_name = opts.delete("database")
|
74
|
+
if opts.fetch("adapter") == "postgres"
|
75
|
+
opts["database"] = "postgres"
|
76
|
+
opts["schema_search_path"] = "public"
|
77
|
+
end
|
68
78
|
connection = connect(opts)
|
69
79
|
connection.run(cmd % { database_name: database_name })
|
70
80
|
end
|
@@ -9,20 +9,20 @@ module Communard
|
|
9
9
|
@root = root
|
10
10
|
end
|
11
11
|
|
12
|
-
def migrate(target: nil)
|
12
|
+
def migrate(target: nil, dump_same_db: false)
|
13
13
|
target = Integer(target) if target
|
14
14
|
::Sequel::Migrator.run(connection, migrations, target: target, allow_missing_migration_files: true)
|
15
|
-
dump_schema
|
15
|
+
dump_schema(dump_same_db: dump_same_db)
|
16
16
|
end
|
17
17
|
|
18
18
|
def seed
|
19
19
|
load seeds_file if seeds_file.exist?
|
20
20
|
end
|
21
21
|
|
22
|
-
def rollback(step: 1)
|
22
|
+
def rollback(step: 1, dump_same_db: false)
|
23
23
|
target = applied_migrations[-step - 1]
|
24
24
|
if target
|
25
|
-
migrate(target: target.split(/_/, 2).first)
|
25
|
+
migrate(target: target.split(/_/, 2).first, dump_same_db: dump_same_db)
|
26
26
|
else
|
27
27
|
fail ArgumentError, "Cannot roll back that far"
|
28
28
|
end
|
@@ -33,9 +33,9 @@ module Communard
|
|
33
33
|
migration.apply(connection, :up)
|
34
34
|
end
|
35
35
|
|
36
|
-
def dump_schema
|
36
|
+
def dump_schema(dump_same_db: false)
|
37
37
|
connection.extension :schema_dumper
|
38
|
-
schema = connection.dump_schema_migration(same_db:
|
38
|
+
schema = connection.dump_schema_migration(same_db: dump_same_db)
|
39
39
|
schema_file.open("w") { |f| f << schema.gsub(/\s+$/m, "") }
|
40
40
|
end
|
41
41
|
|
data/lib/communard/rake.rb
CHANGED
@@ -8,43 +8,47 @@ module Communard
|
|
8
8
|
def self.add_tasks(ns = :db, &block)
|
9
9
|
|
10
10
|
namespace ns do
|
11
|
+
task :_load_communard do
|
12
|
+
@_communard_context = Communard.context(&block)
|
13
|
+
end
|
14
|
+
|
11
15
|
desc "Creates the database, migrate the schema, and loads seed data"
|
12
16
|
task :setup => [:create, :migrate, :seed, "db:test:prepare"]
|
13
17
|
|
14
18
|
desc "Creates the database"
|
15
|
-
task :create do
|
16
|
-
|
19
|
+
task :create => :_load_communard do
|
20
|
+
@_communard_context.create_database
|
17
21
|
end
|
18
22
|
|
19
23
|
desc "Drops the database"
|
20
|
-
task :drop do
|
21
|
-
|
24
|
+
task :drop => :_load_communard do
|
25
|
+
@_communard_context.drop_database
|
22
26
|
end
|
23
27
|
|
24
28
|
desc "Drops and creates the database"
|
25
29
|
task :reset => [:drop, :setup]
|
26
30
|
|
27
31
|
desc "Migrate the database"
|
28
|
-
task :migrate do
|
32
|
+
task :migrate => :_load_communard do
|
29
33
|
target = ENV["VERSION"] || ENV["TARGET"]
|
30
|
-
|
34
|
+
@_communard_context.migrate(target: target)
|
31
35
|
end
|
32
36
|
|
33
37
|
desc "Load the seed data from db/seeds.rb"
|
34
|
-
task :seed do
|
35
|
-
|
38
|
+
task :seed => :_load_communard do
|
39
|
+
@_communard_context.seed
|
36
40
|
end
|
37
41
|
|
38
42
|
desc "Rolls the schema back to the previous version"
|
39
|
-
task :rollback do
|
43
|
+
task :rollback => :_load_communard do
|
40
44
|
step = Integer(ENV["STEP"] || 1)
|
41
|
-
|
45
|
+
@_communard_context.rollback(step: step)
|
42
46
|
end
|
43
47
|
|
44
48
|
namespace :test do
|
45
49
|
desc "Cleans the test database"
|
46
|
-
task :prepare do
|
47
|
-
context =
|
50
|
+
task :prepare => :_load_communard do
|
51
|
+
context = @_communard_context
|
48
52
|
context.drop_database(env: "test")
|
49
53
|
context.create_database(env: "test")
|
50
54
|
context.migrate(env: "test")
|
@@ -54,28 +58,28 @@ module Communard
|
|
54
58
|
namespace :migrate do
|
55
59
|
|
56
60
|
desc "Redo the last migration"
|
57
|
-
task :redo do
|
58
|
-
context =
|
61
|
+
task :redo => :_load_communard do
|
62
|
+
context = @_communard_context
|
59
63
|
context.rollback
|
60
64
|
context.migrate
|
61
65
|
end
|
62
66
|
|
63
67
|
desc "Display status of migrations"
|
64
|
-
task :status do
|
65
|
-
|
68
|
+
task :status, :_load_communard do
|
69
|
+
@_communard_context.status
|
66
70
|
end
|
67
71
|
end
|
68
72
|
|
69
73
|
namespace :schema do
|
70
74
|
|
71
75
|
desc "Load the schema from db/schema.rb"
|
72
|
-
task :load do
|
73
|
-
|
76
|
+
task :load => :_load_communard do
|
77
|
+
@_communard_context.load_schema
|
74
78
|
end
|
75
79
|
|
76
80
|
desc "Dumps the schema to db/schema.rb"
|
77
|
-
task :dump do
|
78
|
-
|
81
|
+
task :dump => :_load_communard do
|
82
|
+
@_communard_context.dump_schema
|
79
83
|
end
|
80
84
|
|
81
85
|
end
|
data/lib/communard/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: communard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|