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 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