parity 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/bin/development +5 -0
- data/lib/parity.rb +2 -3
- data/lib/parity/backup.rb +3 -3
- data/lib/parity/development.rb +17 -0
- data/lib/parity/environment.rb +32 -17
- data/lib/parity/production.rb +2 -0
- data/lib/parity/staging.rb +9 -0
- metadata +6 -5
- data/bin/restore-backup +0 -24
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZWQ5MDcxMzdkOTY3ZDE1OGQzZmJiYzlmMjJlN2U4NTQ4NzBiNWM1Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWI3ZjUyZmNlOTY3Yzc1NjQzNDMwMTc4NzcxMzE4ZGYzMDg1NmIyNA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmZhM2U4ZDc0ZDQwM2MzOTlkNTFjZWRjZmJlN2FlOWQ4YmE5NzIyODFjYjBh
|
10
|
+
MTJhYzEwNTJmMWI2YmJiMWNkYmZhOGY1OGFkYzNmYTQ5NGY1ZTZkODIwMjVh
|
11
|
+
YjAyMTdhODgyMmRkM2E4ODU0MDMyYjAwMjEyOTRlNmNkODhkOWQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTlmMjYyNDg3NzEwY2FjODE1ZTA3MTE3OTdlZTIxZDU5OThmODUxZjUyMDhh
|
14
|
+
OWIwZjVkM2M4NmRjMmVlNDMwNGIyODljMzE0MTI4MmRhYTM0YTA5MjBiOGM1
|
15
|
+
Y2JlMDg0NmNhZjEzODAxM2NkNTlmNmI4Y2Q4NTM3ZjA1ZDRjMDQ=
|
data/bin/development
ADDED
data/lib/parity.rb
CHANGED
data/lib/parity/backup.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'parity/backup'
|
2
|
+
require 'parity/environment'
|
3
|
+
|
4
|
+
module Parity
|
5
|
+
class Development < Environment
|
6
|
+
def initialize(subcommands)
|
7
|
+
@environment = 'development'
|
8
|
+
super(subcommands)
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def restore
|
14
|
+
Backup.new(arguments.first, 'development').restore
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/parity/environment.rb
CHANGED
@@ -1,25 +1,13 @@
|
|
1
1
|
module Parity
|
2
2
|
class Environment
|
3
3
|
def initialize(subcommands)
|
4
|
-
@subcommand = subcommands
|
5
|
-
@
|
4
|
+
@subcommand = subcommands[0]
|
5
|
+
@arguments = subcommands[1..-1]
|
6
6
|
end
|
7
7
|
|
8
8
|
def run
|
9
|
-
|
10
|
-
|
11
|
-
system "heroku pgbackups:capture --expire --remote #{environment}"
|
12
|
-
when 'console'
|
13
|
-
system "heroku run console --remote #{environment}"
|
14
|
-
when 'log2viz'
|
15
|
-
system "open https://log2viz.herokuapp.com/app/#{heroku_app_name}"
|
16
|
-
when 'migrate'
|
17
|
-
system %{
|
18
|
-
heroku run rake db:migrate --remote #{environment} &&
|
19
|
-
heroku restart --remote #{environment}
|
20
|
-
}
|
21
|
-
when 'tail'
|
22
|
-
system "heroku logs --tail --remote #{environment}"
|
9
|
+
if self.class.private_method_defined?(subcommand)
|
10
|
+
send(subcommand)
|
23
11
|
else
|
24
12
|
system "heroku #{pass_through} --remote #{environment}"
|
25
13
|
end
|
@@ -27,7 +15,30 @@ module Parity
|
|
27
15
|
|
28
16
|
private
|
29
17
|
|
30
|
-
attr_reader :environment, :
|
18
|
+
attr_reader :environment, :subcommand, :arguments
|
19
|
+
|
20
|
+
def backup
|
21
|
+
system "heroku pgbackups:capture --expire --remote #{environment}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def console
|
25
|
+
system "heroku run console --remote #{environment}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def log2viz
|
29
|
+
system "open https://log2viz.herokuapp.com/app/#{heroku_app_name}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def migrate
|
33
|
+
system %{
|
34
|
+
heroku run rake db:migrate --remote #{environment} &&
|
35
|
+
heroku restart --remote #{environment}
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def tail
|
40
|
+
system "heroku logs --tail --remote #{environment}"
|
41
|
+
end
|
31
42
|
|
32
43
|
def heroku_app_name
|
33
44
|
[app_name, environment].join('-')
|
@@ -36,5 +47,9 @@ module Parity
|
|
36
47
|
def app_name
|
37
48
|
Dir.pwd.split('/').last
|
38
49
|
end
|
50
|
+
|
51
|
+
def pass_through
|
52
|
+
[subcommand, arguments].join(' ')
|
53
|
+
end
|
39
54
|
end
|
40
55
|
end
|
data/lib/parity/production.rb
CHANGED
data/lib/parity/staging.rb
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
+
require 'parity/backup'
|
2
|
+
require 'parity/environment'
|
3
|
+
|
1
4
|
module Parity
|
2
5
|
class Staging < Environment
|
3
6
|
def initialize(subcommands)
|
4
7
|
@environment = 'staging'
|
5
8
|
super(subcommands)
|
6
9
|
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def restore
|
14
|
+
Backup.new(arguments.last, 'staging').restore
|
15
|
+
end
|
7
16
|
end
|
8
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Croak
|
@@ -17,20 +17,21 @@ description: ! " Devevelopment/staging/production parity is intended to decre
|
|
17
17
|
email:
|
18
18
|
- dan@thoughtbot.com
|
19
19
|
executables:
|
20
|
-
-
|
21
|
-
- restore-backup
|
20
|
+
- development
|
22
21
|
- staging
|
22
|
+
- production
|
23
23
|
extensions: []
|
24
24
|
extra_rdoc_files: []
|
25
25
|
files:
|
26
26
|
- lib/parity.rb
|
27
27
|
- lib/parity/backup.rb
|
28
|
+
- lib/parity/development.rb
|
28
29
|
- lib/parity/environment.rb
|
29
30
|
- lib/parity/production.rb
|
30
31
|
- lib/parity/staging.rb
|
31
|
-
- bin/
|
32
|
-
- bin/restore-backup
|
32
|
+
- bin/development
|
33
33
|
- bin/staging
|
34
|
+
- bin/production
|
34
35
|
homepage: https://github.com/croaky/parity
|
35
36
|
licenses:
|
36
37
|
- MIT
|
data/bin/restore-backup
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require 'optparse'
|
4
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'parity')
|
5
|
-
|
6
|
-
options = {}
|
7
|
-
|
8
|
-
optparse = OptionParser.new do |opts|
|
9
|
-
opts.on '-f', '--from DATABASE_ENV', 'The source database (such as production or staging)' do |from|
|
10
|
-
options[:from] = from
|
11
|
-
end
|
12
|
-
|
13
|
-
opts.on '-t', '--to DATABASE_ENV', 'The target database (such as staging or development)' do |to|
|
14
|
-
options[:to] = to
|
15
|
-
end
|
16
|
-
|
17
|
-
opts.on '-h', '--help', 'Restore backup from one environment into another.' do
|
18
|
-
puts opts
|
19
|
-
exit
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
optparse.parse!
|
24
|
-
Parity::Backup.new(options).restore
|