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.
- data/README.md +66 -0
- data/Rakefile +107 -0
- data/bin/heroku +15 -0
- data/lib/heroku.rb +5 -0
- data/lib/heroku/client.rb +487 -0
- data/lib/heroku/command.rb +96 -0
- data/lib/heroku/commands/account.rb +13 -0
- data/lib/heroku/commands/addons.rb +109 -0
- data/lib/heroku/commands/app.rb +239 -0
- data/lib/heroku/commands/auth.rb +137 -0
- data/lib/heroku/commands/base.rb +133 -0
- data/lib/heroku/commands/bundles.rb +51 -0
- data/lib/heroku/commands/config.rb +55 -0
- data/lib/heroku/commands/db.rb +129 -0
- data/lib/heroku/commands/domains.rb +31 -0
- data/lib/heroku/commands/help.rb +148 -0
- data/lib/heroku/commands/keys.rb +49 -0
- data/lib/heroku/commands/logs.rb +11 -0
- data/lib/heroku/commands/maintenance.rb +13 -0
- data/lib/heroku/commands/plugins.rb +25 -0
- data/lib/heroku/commands/ps.rb +37 -0
- data/lib/heroku/commands/service.rb +23 -0
- data/lib/heroku/commands/sharing.rb +29 -0
- data/lib/heroku/commands/ssl.rb +33 -0
- data/lib/heroku/commands/version.rb +7 -0
- data/lib/heroku/helpers.rb +23 -0
- data/lib/heroku/plugin.rb +65 -0
- data/spec/base.rb +23 -0
- data/spec/client_spec.rb +366 -0
- data/spec/command_spec.rb +15 -0
- data/spec/commands/addons_spec.rb +47 -0
- data/spec/commands/app_spec.rb +175 -0
- data/spec/commands/auth_spec.rb +104 -0
- data/spec/commands/base_spec.rb +114 -0
- data/spec/commands/bundles_spec.rb +48 -0
- data/spec/commands/config_spec.rb +45 -0
- data/spec/commands/db_spec.rb +53 -0
- data/spec/commands/domains_spec.rb +31 -0
- data/spec/commands/keys_spec.rb +60 -0
- data/spec/commands/logs_spec.rb +21 -0
- data/spec/commands/maintenance_spec.rb +21 -0
- data/spec/commands/plugins_spec.rb +26 -0
- data/spec/commands/ps_spec.rb +16 -0
- data/spec/commands/sharing_spec.rb +32 -0
- data/spec/commands/ssl_spec.rb +25 -0
- data/spec/plugin_spec.rb +64 -0
- 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
|
data/spec/plugin_spec.rb
ADDED
@@ -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
|