parity 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzNiZWZhM2E4ZmJmYjU4NzhhMjZlYTFiZjQyMDZhMDE3MGU0ZWRiMA==
4
+ ZWQ5MDcxMzdkOTY3ZDE1OGQzZmJiYzlmMjJlN2U4NTQ4NzBiNWM1Ng==
5
5
  data.tar.gz: !binary |-
6
- OTZmOWIxOTkzYjE0ZjVkNmY2YzE4YjZkNzRlZGMwNDdjYTJjNjg1MQ==
6
+ NWI3ZjUyZmNlOTY3Yzc1NjQzNDMwMTc4NzcxMzE4ZGYzMDg1NmIyNA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NzIyZDJiNjAzNmFiMWQzYjJjZTkzMGU3ODZiODczYWI5YWQwY2UxYzRhMTdl
10
- MWJhNzc0NjhjM2NhZGVlMWNhZTgxOGI1MmNiNmMxODQ4M2ZiNDMyMTg2N2Q0
11
- MTJlZTdhNTE5OGU3Njc0ZDIzZmUzMjc3N2I3MTVjOTMwMWE2MGE=
9
+ YmZhM2U4ZDc0ZDQwM2MzOTlkNTFjZWRjZmJlN2FlOWQ4YmE5NzIyODFjYjBh
10
+ MTJhYzEwNTJmMWI2YmJiMWNkYmZhOGY1OGFkYzNmYTQ5NGY1ZTZkODIwMjVh
11
+ YjAyMTdhODgyMmRkM2E4ODU0MDMyYjAwMjEyOTRlNmNkODhkOWQ=
12
12
  data.tar.gz: !binary |-
13
- YzIxNDQ1NzBkOTNhMjZhOGExYzA2YWNlOTk1NzNjYzI0ZWEzZjVlODNlOWY5
14
- OTIzY2M5MDQyNjRjYWRmOTQ0NTAzMWJiYjVlYTYwN2NkMjM1MDg2YTFhODIx
15
- MzMyZjM0MWE0NmQ0YTRmMDQ3NzBmMDBiYjM3MjlkYzI0ODc1ZDk=
13
+ MTlmMjYyNDg3NzEwY2FjODE1ZTA3MTE3OTdlZTIxZDU5OThmODUxZjUyMDhh
14
+ OWIwZjVkM2M4NmRjMmVlNDMwNGIyODljMzE0MTI4MmRhYTM0YTA5MjBiOGM1
15
+ Y2JlMDg0NmNhZjEzODAxM2NkNTlmNmI4Y2Q4NTM3ZjA1ZDRjMDQ=
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'parity')
4
+
5
+ Parity::Development.new(ARGV).run
@@ -1,4 +1,3 @@
1
- require 'parity/backup'
2
- require 'parity/environment'
3
- require 'parity/production'
1
+ require 'parity/development'
4
2
  require 'parity/staging'
3
+ require 'parity/production'
@@ -2,9 +2,9 @@ require 'yaml'
2
2
 
3
3
  module Parity
4
4
  class Backup
5
- def initialize(options)
6
- @from = options[:from]
7
- @to = options[:to]
5
+ def initialize(from, to)
6
+ @from = from
7
+ @to = to
8
8
  end
9
9
 
10
10
  def restore
@@ -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
@@ -1,25 +1,13 @@
1
1
  module Parity
2
2
  class Environment
3
3
  def initialize(subcommands)
4
- @subcommand = subcommands.first
5
- @pass_through = subcommands.join(' ')
4
+ @subcommand = subcommands[0]
5
+ @arguments = subcommands[1..-1]
6
6
  end
7
7
 
8
8
  def run
9
- case subcommand
10
- when 'backup'
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, :pass_through, :subcommand
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
@@ -1,3 +1,5 @@
1
+ require 'parity/environment'
2
+
1
3
  module Parity
2
4
  class Production < Environment
3
5
  def initialize(subcommands)
@@ -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.1
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
- - production
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/production
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
@@ -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