artofmission-heroku 1.6.3

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