artofmission-heroku 1.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/README.md +66 -0
  2. data/Rakefile +107 -0
  3. data/bin/heroku +15 -0
  4. data/lib/heroku.rb +5 -0
  5. data/lib/heroku/client.rb +487 -0
  6. data/lib/heroku/command.rb +96 -0
  7. data/lib/heroku/commands/account.rb +13 -0
  8. data/lib/heroku/commands/addons.rb +109 -0
  9. data/lib/heroku/commands/app.rb +239 -0
  10. data/lib/heroku/commands/auth.rb +137 -0
  11. data/lib/heroku/commands/base.rb +133 -0
  12. data/lib/heroku/commands/bundles.rb +51 -0
  13. data/lib/heroku/commands/config.rb +55 -0
  14. data/lib/heroku/commands/db.rb +129 -0
  15. data/lib/heroku/commands/domains.rb +31 -0
  16. data/lib/heroku/commands/help.rb +148 -0
  17. data/lib/heroku/commands/keys.rb +49 -0
  18. data/lib/heroku/commands/logs.rb +11 -0
  19. data/lib/heroku/commands/maintenance.rb +13 -0
  20. data/lib/heroku/commands/plugins.rb +25 -0
  21. data/lib/heroku/commands/ps.rb +37 -0
  22. data/lib/heroku/commands/service.rb +23 -0
  23. data/lib/heroku/commands/sharing.rb +29 -0
  24. data/lib/heroku/commands/ssl.rb +33 -0
  25. data/lib/heroku/commands/version.rb +7 -0
  26. data/lib/heroku/helpers.rb +23 -0
  27. data/lib/heroku/plugin.rb +65 -0
  28. data/spec/base.rb +23 -0
  29. data/spec/client_spec.rb +366 -0
  30. data/spec/command_spec.rb +15 -0
  31. data/spec/commands/addons_spec.rb +47 -0
  32. data/spec/commands/app_spec.rb +175 -0
  33. data/spec/commands/auth_spec.rb +104 -0
  34. data/spec/commands/base_spec.rb +114 -0
  35. data/spec/commands/bundles_spec.rb +48 -0
  36. data/spec/commands/config_spec.rb +45 -0
  37. data/spec/commands/db_spec.rb +53 -0
  38. data/spec/commands/domains_spec.rb +31 -0
  39. data/spec/commands/keys_spec.rb +60 -0
  40. data/spec/commands/logs_spec.rb +21 -0
  41. data/spec/commands/maintenance_spec.rb +21 -0
  42. data/spec/commands/plugins_spec.rb +26 -0
  43. data/spec/commands/ps_spec.rb +16 -0
  44. data/spec/commands/sharing_spec.rb +32 -0
  45. data/spec/commands/ssl_spec.rb +25 -0
  46. data/spec/plugin_spec.rb +64 -0
  47. metadata +150 -0
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Db do
5
+ before do
6
+ @db = prepare_command(Db)
7
+ @taps_client = mock('taps client')
8
+ end
9
+
10
+ it "pull database" do
11
+ @db.stub!(:args).and_return(['postgres://postgres@localhost/db'])
12
+ @db.should_receive(:taps_client).with('postgres://postgres@localhost/db').and_yield(@taps_client)
13
+ @taps_client.should_receive(:cmd_receive)
14
+ @db.pull
15
+ end
16
+
17
+ it "push database" do
18
+ @db.stub!(:ask).and_return('y')
19
+ @db.stub!(:args).and_return(['postgres://postgres@localhost/db'])
20
+ @db.should_receive(:taps_client).with('postgres://postgres@localhost/db').and_yield(@taps_client)
21
+ @taps_client.should_receive(:cmd_send)
22
+ @db.push
23
+ end
24
+
25
+ it "doesn't push database if the user doesn't confirm" do
26
+ @db.stub!(:ask).and_return('no')
27
+ @db.stub!(:args).and_return(['postgres://postgres@localhost/db'])
28
+ @db.should_not_receive(:taps_client)
29
+ @db.push
30
+ end
31
+
32
+ it "resets the app's database specified with --app if user confirms" do
33
+ @db.stub!(:ask).and_return('y')
34
+ @db.stub!(:autodetected_app).and_return(false)
35
+ @db.heroku.stub!(:info).and_return({})
36
+ @db.heroku.should_receive(:database_reset).with('myapp')
37
+ @db.reset
38
+ end
39
+
40
+ it "doesn't reset the app's database if the user doesn't confirms" do
41
+ @db.stub!(:ask).and_return('no')
42
+ @db.stub!(:args).and_return(['--app', 'myapp'])
43
+ @db.heroku.stub!(:info).and_return({})
44
+ @db.heroku.should_not_receive(:database_reset)
45
+ @db.reset
46
+ end
47
+
48
+ it "defaults host to 127.0.0.1 with a username" do
49
+ @db.stub!(:escape).and_return('user')
50
+ @db.send(:uri_hash_to_url, {'scheme' => 'db', 'username' => 'user', 'path' => 'database'}).should == 'db://user@127.0.0.1/database'
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Domains do
5
+ before do
6
+ @domains = prepare_command(Domains)
7
+ end
8
+
9
+ it "lists domains" do
10
+ @domains.heroku.should_receive(:list_domains).and_return([])
11
+ @domains.list
12
+ end
13
+
14
+ it "adds domain names" do
15
+ @domains.stub!(:args).and_return(['example.com'])
16
+ @domains.heroku.should_receive(:add_domain).with('myapp', 'example.com')
17
+ @domains.add
18
+ end
19
+
20
+ it "removes domain names" do
21
+ @domains.stub!(:args).and_return(['example.com'])
22
+ @domains.heroku.should_receive(:remove_domain).with('myapp', 'example.com')
23
+ @domains.remove
24
+ end
25
+
26
+ it "removes all domain names" do
27
+ @domains.heroku.should_receive(:remove_domains).with('myapp')
28
+ @domains.clear
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Keys do
5
+ before do
6
+ @keys = prepare_command(Keys)
7
+ @keys.heroku.stub!(:user).and_return('joe')
8
+ end
9
+
10
+ it "adds a key from the default locations if no key filename is supplied" do
11
+ @keys.should_receive(:find_key).and_return('/home/joe/.ssh/id_rsa.pub')
12
+ File.should_receive(:read).with('/home/joe/.ssh/id_rsa.pub').and_return('ssh-rsa xyz')
13
+ @keys.heroku.should_receive(:add_key).with('ssh-rsa xyz')
14
+ @keys.add
15
+ end
16
+
17
+ it "adds a key from a specified keyfile path" do
18
+ @keys.stub!(:args).and_return(['/my/key.pub'])
19
+ @keys.should_not_receive(:find_key)
20
+ File.should_receive(:read).with('/my/key.pub').and_return('ssh-rsa xyz')
21
+ @keys.heroku.should_receive(:add_key).with('ssh-rsa xyz')
22
+ @keys.add
23
+ end
24
+
25
+ it "list keys, trimming the hex code for better display" do
26
+ @keys.heroku.should_receive(:keys).and_return(["ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp9AJD5QABmOcrkHm6SINuQkDefaR0MUrfgZ1Pxir3a4fM1fwa00dsUwbUaRuR7FEFD8n1E9WwDf8SwQTHtyZsJg09G9myNqUzkYXCmydN7oGr5IdVhRyv5ixcdiE0hj7dRnOJg2poSQ3Qi+Ka8SVJzF7nIw1YhuicHPSbNIFKi5s0D5a+nZb/E6MNGvhxoFCQX2IcNxaJMqhzy1ESwlixz45aT72mXYq0LIxTTpoTqma1HuKdRY8HxoREiivjmMQulYP+CxXFcMyV9kxTKIUZ/FXqlC6G5vSm3J4YScSatPOj9ID5HowpdlIx8F6y4p1/28r2tTl4CY40FFyoke4MQ== pedro@heroku\n"])
27
+ @keys.should_receive(:display).with('ssh-rsa AAAAB3NzaC...Fyoke4MQ== pedro@heroku')
28
+ @keys.list
29
+ end
30
+
31
+ it "list keys showing the whole key hex with --long" do
32
+ @keys.stub!(:args).and_return(['--long'])
33
+ @keys.heroku.should_receive(:keys).and_return(["ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp9AJD5QABmOcrkHm6SINuQkDefaR0MUrfgZ1Pxir3a4fM1fwa00dsUwbUaRuR7FEFD8n1E9WwDf8SwQTHtyZsJg09G9myNqUzkYXCmydN7oGr5IdVhRyv5ixcdiE0hj7dRnOJg2poSQ3Qi+Ka8SVJzF7nIw1YhuicHPSbNIFKi5s0D5a+nZb/E6MNGvhxoFCQX2IcNxaJMqhzy1ESwlixz45aT72mXYq0LIxTTpoTqma1HuKdRY8HxoREiivjmMQulYP+CxXFcMyV9kxTKIUZ/FXqlC6G5vSm3J4YScSatPOj9ID5HowpdlIx8F6y4p1/28r2tTl4CY40FFyoke4MQ== pedro@heroku\n"])
34
+ @keys.should_receive(:display).with("ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp9AJD5QABmOcrkHm6SINuQkDefaR0MUrfgZ1Pxir3a4fM1fwa00dsUwbUaRuR7FEFD8n1E9WwDf8SwQTHtyZsJg09G9myNqUzkYXCmydN7oGr5IdVhRyv5ixcdiE0hj7dRnOJg2poSQ3Qi+Ka8SVJzF7nIw1YhuicHPSbNIFKi5s0D5a+nZb/E6MNGvhxoFCQX2IcNxaJMqhzy1ESwlixz45aT72mXYq0LIxTTpoTqma1HuKdRY8HxoREiivjmMQulYP+CxXFcMyV9kxTKIUZ/FXqlC6G5vSm3J4YScSatPOj9ID5HowpdlIx8F6y4p1/28r2tTl4CY40FFyoke4MQ== pedro@heroku")
35
+ @keys.list
36
+ end
37
+
38
+ context "key locating" do
39
+ before do
40
+ @keys.stub!(:home_directory).and_return('/home/joe')
41
+ end
42
+
43
+ it "finds the user's ssh key in ~/ssh/id_rsa.pub" do
44
+ File.should_receive(:exists?).with('/home/joe/.ssh/id_rsa.pub').and_return(true)
45
+ @keys.send(:find_key).should == '/home/joe/.ssh/id_rsa.pub'
46
+ end
47
+
48
+ it "finds the user's ssh key in ~/ssh/id_dsa.pub" do
49
+ File.should_receive(:exists?).with('/home/joe/.ssh/id_rsa.pub').and_return(false)
50
+ File.should_receive(:exists?).with('/home/joe/.ssh/id_dsa.pub').and_return(true)
51
+ @keys.send(:find_key).should == '/home/joe/.ssh/id_dsa.pub'
52
+ end
53
+
54
+ it "raises an exception if neither id_rsa or id_dsa were found" do
55
+ File.stub!(:exists?).and_return(false)
56
+ lambda { @keys.send(:find_key) }.should raise_error(Heroku::Command::CommandFailed)
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Logs do
5
+ before do
6
+ @cli = prepare_command(Logs)
7
+ end
8
+
9
+ it "shows the app logs" do
10
+ @cli.heroku.should_receive(:logs).with('myapp').and_return('logs')
11
+ @cli.should_receive(:display).with('logs')
12
+ @cli.index
13
+ end
14
+
15
+ it "shows the app cron logs" do
16
+ @cli.heroku.should_receive(:cron_logs).with('myapp').and_return('cron logs')
17
+ @cli.should_receive(:display).with('cron logs')
18
+ @cli.cron
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Maintenance do
5
+ before do
6
+ @m = prepare_command(Maintenance)
7
+ end
8
+
9
+ it "turns on maintenance mode for the app" do
10
+ @m.heroku.should_receive(:maintenance).with('myapp', :on)
11
+ @m.should_receive(:display).with('Maintenance mode enabled.')
12
+ @m.on
13
+ end
14
+
15
+ it "turns off maintenance mode for the app" do
16
+ @m.heroku.should_receive(:maintenance).with('myapp', :off)
17
+ @m.should_receive(:display).with('Maintenance mode disabled.')
18
+ @m.off
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ include SandboxHelper
5
+
6
+ describe Plugins do
7
+ before do
8
+ @command = prepare_command(Plugins)
9
+ @plugin = mock('heroku plugin')
10
+ end
11
+
12
+ it "installs plugins" do
13
+ @command.stub!(:args).and_return(['git://github.com/heroku/plugin.git'])
14
+ Heroku::Plugin.should_receive(:new).with('git://github.com/heroku/plugin.git').and_return(@plugin)
15
+ @plugin.should_receive(:install).and_return(true)
16
+ @command.install
17
+ end
18
+
19
+ it "uninstalls plugins" do
20
+ @command.stub!(:args).and_return(['plugin'])
21
+ Heroku::Plugin.should_receive(:new).with('plugin').and_return(@plugin)
22
+ @plugin.should_receive(:uninstall)
23
+ @command.uninstall
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,16 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Ps do
5
+ before do
6
+ @cli = prepare_command(Ps)
7
+ end
8
+
9
+ it "lists processes" do
10
+ @cli.heroku.should_receive(:ps).and_return([
11
+ { 'command' => 'rake', 'elapsed' => 3 }
12
+ ])
13
+ @cli.index
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Sharing do
5
+ before do
6
+ @cli = prepare_command(Sharing)
7
+ end
8
+
9
+ it "lists collaborators" do
10
+ @cli.heroku.should_receive(:list_collaborators).and_return([])
11
+ @cli.list
12
+ end
13
+
14
+ it "adds collaborators with default access to view only" do
15
+ @cli.stub!(:args).and_return(['joe@example.com'])
16
+ @cli.heroku.should_receive(:add_collaborator).with('myapp', 'joe@example.com')
17
+ @cli.add
18
+ end
19
+
20
+ it "removes collaborators" do
21
+ @cli.stub!(:args).and_return(['joe@example.com'])
22
+ @cli.heroku.should_receive(:remove_collaborator).with('myapp', 'joe@example.com')
23
+ @cli.remove
24
+ end
25
+
26
+ it "transfers ownership" do
27
+ @cli.stub!(:args).and_return(['joe@example.com'])
28
+ @cli.heroku.should_receive(:update).with('myapp', :transfer_owner => 'joe@example.com')
29
+ @cli.transfer
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/../base'
2
+
3
+ module Heroku::Command
4
+ describe Ssl do
5
+ before do
6
+ @ssl = prepare_command(Ssl)
7
+ end
8
+
9
+ it "adds ssl certificates to domains" do
10
+ @ssl.stub!(:args).and_return(['my.crt', 'my.key'])
11
+ File.should_receive(:exists?).with('my.crt').and_return(true)
12
+ File.should_receive(:read).with('my.crt').and_return('crt contents')
13
+ File.should_receive(:exists?).with('my.key').and_return(true)
14
+ File.should_receive(:read).with('my.key').and_return('key contents')
15
+ @ssl.heroku.should_receive(:add_ssl).with('myapp', 'crt contents', 'key contents').and_return({})
16
+ @ssl.add
17
+ end
18
+
19
+ it "removes certificates" do
20
+ @ssl.stub!(:args).and_return(['example.com'])
21
+ @ssl.heroku.should_receive(:remove_ssl).with('myapp', 'example.com')
22
+ @ssl.remove
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,64 @@
1
+ require File.dirname(__FILE__) + '/base'
2
+
3
+ module Heroku
4
+ describe Plugin do
5
+ include SandboxHelper
6
+
7
+ it "lives in ~/.heroku/plugins" do
8
+ Plugin.stub!(:home_directory).and_return('/home/user')
9
+ Plugin.directory.should == '/home/user/.heroku/plugins'
10
+ end
11
+
12
+ it "extracts the name from git urls" do
13
+ Plugin.new('git://github.com/heroku/plugin.git').name.should == 'plugin'
14
+ end
15
+
16
+ describe "management" do
17
+ before(:each) do
18
+ @sandbox = "/tmp/heroku_plugins_spec_#{Process.pid}"
19
+ FileUtils.mkdir_p(@sandbox)
20
+ Dir.stub!(:pwd).and_return(@sandbox)
21
+ Plugin.stub!(:directory).and_return(@sandbox)
22
+ end
23
+
24
+ after(:each) do
25
+ FileUtils.rm_rf(@sandbox)
26
+ end
27
+
28
+ it "lists installed plugins" do
29
+ FileUtils.mkdir_p(@sandbox + '/plugin1')
30
+ FileUtils.mkdir_p(@sandbox + '/plugin2')
31
+ Plugin.list.should == %w( plugin1 plugin2 )
32
+ end
33
+
34
+ it "installs pulling from the plugin url" do
35
+ plugin_folder = "/tmp/heroku_plugin"
36
+ FileUtils.mkdir_p(plugin_folder)
37
+ `cd #{plugin_folder} && git init && echo 'test' > README && git add . && git commit -m 'my plugin'`
38
+ Plugin.new(plugin_folder).install
39
+ File.directory?("#{@sandbox}/heroku_plugin").should be_true
40
+ File.read("#{@sandbox}/heroku_plugin/README").should == "test\n"
41
+ end
42
+
43
+ it "uninstalls removing the folder" do
44
+ FileUtils.mkdir_p(@sandbox + '/plugin1')
45
+ Plugin.new('git://github.com/heroku/plugin1.git').uninstall
46
+ Plugin.list.should == []
47
+ end
48
+
49
+ it "adds the lib folder in the plugin to the load path, if present" do
50
+ FileUtils.mkdir_p(@sandbox + '/plugin/lib')
51
+ File.open(@sandbox + '/plugin/lib/my_custom_plugin_file.rb', 'w') { |f| f.write "" }
52
+ Plugin.load!
53
+ lambda { require 'my_custom_plugin_file' }.should_not raise_error(LoadError)
54
+ end
55
+
56
+ it "loads init.rb, if present" do
57
+ FileUtils.mkdir_p(@sandbox + '/plugin')
58
+ File.open(@sandbox + '/plugin/init.rb', 'w') { |f| f.write "LoadedInit = true" }
59
+ Plugin.load!
60
+ LoadedInit.should be_true
61
+ end
62
+ end
63
+ end
64
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: artofmission-heroku
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.6.3
5
+ platform: ruby
6
+ authors:
7
+ - Heroku
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-07 00:00:00 -05:00
13
+ default_executable: heroku
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rest-client
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.2.0
24
+ - - <
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0
27
+ version:
28
+ - !ruby/object:Gem::Dependency
29
+ name: launchy
30
+ type: :runtime
31
+ version_requirement:
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 0.3.2
37
+ version:
38
+ - !ruby/object:Gem::Dependency
39
+ name: json
40
+ type: :runtime
41
+ version_requirement:
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.1.0
47
+ version:
48
+ description: Client library and command-line tool to manage and deploy Rails apps on Heroku.
49
+ email: support@heroku.com
50
+ executables:
51
+ - heroku
52
+ extensions: []
53
+
54
+ extra_rdoc_files:
55
+ - README.md
56
+ files:
57
+ - Rakefile
58
+ - bin/heroku
59
+ - lib/heroku.rb
60
+ - lib/heroku/client.rb
61
+ - lib/heroku/command.rb
62
+ - lib/heroku/commands/account.rb
63
+ - lib/heroku/commands/addons.rb
64
+ - lib/heroku/commands/app.rb
65
+ - lib/heroku/commands/auth.rb
66
+ - lib/heroku/commands/base.rb
67
+ - lib/heroku/commands/bundles.rb
68
+ - lib/heroku/commands/config.rb
69
+ - lib/heroku/commands/db.rb
70
+ - lib/heroku/commands/domains.rb
71
+ - lib/heroku/commands/help.rb
72
+ - lib/heroku/commands/keys.rb
73
+ - lib/heroku/commands/logs.rb
74
+ - lib/heroku/commands/maintenance.rb
75
+ - lib/heroku/commands/plugins.rb
76
+ - lib/heroku/commands/ps.rb
77
+ - lib/heroku/commands/service.rb
78
+ - lib/heroku/commands/sharing.rb
79
+ - lib/heroku/commands/ssl.rb
80
+ - lib/heroku/commands/version.rb
81
+ - lib/heroku/helpers.rb
82
+ - lib/heroku/plugin.rb
83
+ - spec/base.rb
84
+ - spec/client_spec.rb
85
+ - spec/command_spec.rb
86
+ - spec/commands/addons_spec.rb
87
+ - spec/commands/app_spec.rb
88
+ - spec/commands/auth_spec.rb
89
+ - spec/commands/base_spec.rb
90
+ - spec/commands/bundles_spec.rb
91
+ - spec/commands/config_spec.rb
92
+ - spec/commands/db_spec.rb
93
+ - spec/commands/domains_spec.rb
94
+ - spec/commands/keys_spec.rb
95
+ - spec/commands/logs_spec.rb
96
+ - spec/commands/maintenance_spec.rb
97
+ - spec/commands/plugins_spec.rb
98
+ - spec/commands/ps_spec.rb
99
+ - spec/commands/sharing_spec.rb
100
+ - spec/commands/ssl_spec.rb
101
+ - spec/plugin_spec.rb
102
+ - README.md
103
+ has_rdoc: true
104
+ homepage: http://heroku.com/
105
+ licenses: []
106
+
107
+ post_install_message:
108
+ rdoc_options:
109
+ - --charset=UTF-8
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: "0"
117
+ version:
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: "0"
123
+ version:
124
+ requirements: []
125
+
126
+ rubyforge_project: heroku
127
+ rubygems_version: 1.3.5
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: Client library and CLI to deploy Rails apps on Heroku.
131
+ test_files:
132
+ - spec/base.rb
133
+ - spec/client_spec.rb
134
+ - spec/command_spec.rb
135
+ - spec/commands/addons_spec.rb
136
+ - spec/commands/app_spec.rb
137
+ - spec/commands/auth_spec.rb
138
+ - spec/commands/base_spec.rb
139
+ - spec/commands/bundles_spec.rb
140
+ - spec/commands/config_spec.rb
141
+ - spec/commands/db_spec.rb
142
+ - spec/commands/domains_spec.rb
143
+ - spec/commands/keys_spec.rb
144
+ - spec/commands/logs_spec.rb
145
+ - spec/commands/maintenance_spec.rb
146
+ - spec/commands/plugins_spec.rb
147
+ - spec/commands/ps_spec.rb
148
+ - spec/commands/sharing_spec.rb
149
+ - spec/commands/ssl_spec.rb
150
+ - spec/plugin_spec.rb