intercity 0.1
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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data/.gitignore +2 -0
- data/README.md +55 -0
- data/bin/intercity +4 -0
- data/certs/michiels.pem +21 -0
- data/intercity.gemspec +16 -0
- data/lib/intercity/cli/application.rb +149 -0
- data/lib/intercity/cli/mysql.rb +78 -0
- data/lib/intercity/cli/server.rb +31 -0
- data/lib/intercity/cli.rb +32 -0
- data.tar.gz.sig +0 -0
- metadata +89 -0
- metadata.gz.sig +2 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4346069156d4528cad92d302592e311863be9843
|
4
|
+
data.tar.gz: c6dbeca166824234eabbe224612c630fba460880
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 75b1708376987be21b2ba56ebf0d46f75a64bf99962b1bdbe7aa59c513cb5ab758f2efd23bdd61f84405fd8a337ccc9eac87904c93d30f4c76ae911b922a0d81
|
7
|
+
data.tar.gz: ee8ef91c1e479adc7af2b2aa475eb1f0c309c872c60cc993bfcbf5bddacbc071f17f133492a1ea458231b4b450d1bd511270c192717b6503424302aced383a75
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
Intercity CLI
|
2
|
+
=============
|
3
|
+
|
4
|
+
Command-line interface for configuring a VPS to run Ruby on Rails.
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
```
|
10
|
+
$ gem install intercity
|
11
|
+
```
|
12
|
+
|
13
|
+
Usage
|
14
|
+
-----
|
15
|
+
|
16
|
+
Install a clean Ubuntu server and add MySQL:
|
17
|
+
|
18
|
+
```
|
19
|
+
$ intercity server install IPADDRESS
|
20
|
+
$ intercity mysql install --server=IPADDRESS
|
21
|
+
```
|
22
|
+
|
23
|
+
Then create an application on your server:
|
24
|
+
|
25
|
+
```
|
26
|
+
$ intercity application create intercity --server=IPADDRESS --domain-name=myapp.com
|
27
|
+
```
|
28
|
+
|
29
|
+
You can edit environment variables for your app like this:
|
30
|
+
|
31
|
+
```
|
32
|
+
$ intercity application edit intercity --server=IPADDRESS # Edit ENV vars
|
33
|
+
```
|
34
|
+
|
35
|
+
Finally, set up Capistrano in your app and deploy with:
|
36
|
+
|
37
|
+
```
|
38
|
+
$ cd ~/myapp
|
39
|
+
$ cap production deploy
|
40
|
+
```
|
41
|
+
|
42
|
+
All commands
|
43
|
+
------------
|
44
|
+
|
45
|
+
```
|
46
|
+
$ intercity server install IPADDRESS
|
47
|
+
|
48
|
+
$ intercity mysql list --server=IPADDRESS
|
49
|
+
$ intercity mysql install --server=IPADDRESS
|
50
|
+
|
51
|
+
$ intercity application add APPNAME --server=IPADDRESS --domain-name=myapp.com
|
52
|
+
$ intercity application update APPNAME --server=IPADDRESS --domain-name=myapp.com
|
53
|
+
$ intercity application edit APPNAME --server=IPADDRESS # For editing the ENV vars
|
54
|
+
$ intercity application list --server=IPADDRESS
|
55
|
+
```
|
data/bin/intercity
ADDED
data/certs/michiels.pem
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRcwFQYDVQQDDA5taWNo
|
3
|
+
aWVsLnNpa2tlczEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQB
|
4
|
+
GRYDY29tMB4XDTE0MTIyNDEyNTQzM1oXDTE1MTIyNDEyNTQzM1owRTEXMBUGA1UE
|
5
|
+
AwwObWljaGllbC5zaWtrZXMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmS
|
6
|
+
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJXr
|
7
|
+
ZzV/gU/XPk6hhBs/iSn+HYGLHYnaEtVkNliKZKWLr7arKGM5pneM9rub8VaA9iKE
|
8
|
+
N2swxHngobSDouYBJcxlQabCWx8htD4nSlOXWTfFeR78jhfYS2VyysQ0dnHSjE9c
|
9
|
+
KXa8EHcg0YNPpWqWoGemb4iJENnqcGGLY67RBhkHsWj5BJO84e4hS8vsUYyAiAbV
|
10
|
+
3nO5+5EmnkWQB2fVDTL3tjY1yOdzfyvaIifwt9aKVwY0YPORIlm9RI4wtQRv9NFq
|
11
|
+
ONyougmLd5vVWp6jO1+9O6TxayzDccJLGuGB6Tw94BQo3o50yoLZew44A7VT3XC2
|
12
|
+
LQg3n8Pzuow9MtTRrC0CAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
|
13
|
+
sDAdBgNVHQ4EFgQUbb9Rb7oi1MDVYRSgxiQ33szdVCswIwYDVR0RBBwwGoEYbWlj
|
14
|
+
aGllbC5zaWtrZXNAZ21haWwuY29tMCMGA1UdEgQcMBqBGG1pY2hpZWwuc2lra2Vz
|
15
|
+
QGdtYWlsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEABVgqI2u309QC/Dgpas1eefZ5
|
16
|
+
ihSC1O8VE+5sKd+VZ3COciOAL5me1EcmHdpp+SXZv54E4IPMkLJIaeRhLN+3BzhB
|
17
|
+
+FxZuMOFHsaRFrYJhvyiZ1YaA30Rrv7Ac2Z9b19+++mKVSwwoMfTCYUHbNX1e8gy
|
18
|
+
50GjXI5RjqXz8goJnASe1sx12Dm6Hi5fWZxdnIJIU4EJGqSyfEQNDcOOILRvihdp
|
19
|
+
+MPuiRlaQjfZy/soMMERP/wuGpw6Ce94ITJ56wjQgl3YhqQPoE76KgRu4b4YwKhx
|
20
|
+
H7APPQD4vksmpWYDCN7llFs/nPaYM6lkxy7bcHRQxaA/km9IF+0iwbhv9mDdDQ==
|
21
|
+
-----END CERTIFICATE-----
|
data/intercity.gemspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'intercity'
|
3
|
+
s.version = '0.1'
|
4
|
+
s.date = '2015-01-24'
|
5
|
+
s.summary = 'Command-line interface for hosting Rails apps on your server.'
|
6
|
+
s.authors = ['Michiel Sikkes']
|
7
|
+
s.email = 'michiel.sikkes@gmail.com'
|
8
|
+
s.files = `git ls-files -z`.split("\x0")
|
9
|
+
s.homepage = 'https://intercityup.com'
|
10
|
+
s.license = 'MIT'
|
11
|
+
s.executables << 'intercity'
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.cert_chain = ["certs/michiels.pem"]
|
14
|
+
s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
|
15
|
+
s.add_runtime_dependency 'thor', '~> 0.19'
|
16
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "sshkit"
|
3
|
+
|
4
|
+
module IntercityCLI
|
5
|
+
class Application < Thor
|
6
|
+
require "sshkit/dsl"
|
7
|
+
|
8
|
+
map "create" => :add
|
9
|
+
map "update" => :add
|
10
|
+
|
11
|
+
desc "list", "Lists all the application deployments on the server"
|
12
|
+
option :user, default: "root"
|
13
|
+
option :server, type: :string, required: true
|
14
|
+
def list()
|
15
|
+
configuration = IntercityCLI::Configuration.new()
|
16
|
+
|
17
|
+
server = options[:server]
|
18
|
+
user = options[:user]
|
19
|
+
on server do |host|
|
20
|
+
host.user = user
|
21
|
+
|
22
|
+
applications = capture("ls /u/apps")
|
23
|
+
puts applications
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "edit APPLICATION", "Edit ENV variables for application"
|
28
|
+
option :user, default: "root"
|
29
|
+
option :server, type: :string, required: true
|
30
|
+
def edit(application)
|
31
|
+
address = options[:server]
|
32
|
+
|
33
|
+
configuration = IntercityCLI::Configuration.new()
|
34
|
+
node_file = File.join(configuration.config_directory, "#{address}.json")
|
35
|
+
|
36
|
+
user = options[:user]
|
37
|
+
|
38
|
+
raw_json = File.read(node_file)
|
39
|
+
json = JSON.parse(raw_json)
|
40
|
+
|
41
|
+
json["active_applications"][application]["env_vars"] ||= {}
|
42
|
+
|
43
|
+
env_vars = json["active_applications"][application]["env_vars"]
|
44
|
+
|
45
|
+
temp_contents = []
|
46
|
+
env_vars.each do |key, val|
|
47
|
+
temp_contents << [key,val].join("=")
|
48
|
+
end
|
49
|
+
|
50
|
+
tmp_file = temp_contents.join("\n")
|
51
|
+
|
52
|
+
tmp_filename = "tmp_" + SecureRandom.hex()
|
53
|
+
File.open(tmp_filename, "w") do |f|
|
54
|
+
f.write(tmp_file)
|
55
|
+
end
|
56
|
+
|
57
|
+
file_stamp_before_editing = File.mtime(tmp_filename)
|
58
|
+
response = system("$EDITOR #{tmp_filename}")
|
59
|
+
|
60
|
+
if file_stamp_before_editing != File.mtime(tmp_filename)
|
61
|
+
new_vars = {}
|
62
|
+
new_vars_file = File.read(tmp_filename)
|
63
|
+
new_vars_file.each_line() do |line|
|
64
|
+
key, value = line.strip.split("=")
|
65
|
+
new_vars[key] = value
|
66
|
+
end
|
67
|
+
File.unlink(tmp_filename)
|
68
|
+
|
69
|
+
raw_json = File.read(node_file)
|
70
|
+
json = JSON.parse(raw_json)
|
71
|
+
|
72
|
+
json["active_applications"][application]["env_vars"] = new_vars
|
73
|
+
File.open(node_file, "w") do |f|
|
74
|
+
f.write(JSON.pretty_generate(json))
|
75
|
+
end
|
76
|
+
|
77
|
+
server = address
|
78
|
+
user = options[:user]
|
79
|
+
on server do |host|
|
80
|
+
with debian_frontend: :noninteractive do
|
81
|
+
host.user = user
|
82
|
+
|
83
|
+
upload! node_file , "/root/server_config.json"
|
84
|
+
|
85
|
+
execute 'chef-client -z -j ~/server_config.json -o "recipe[rails::env_vars]"'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
else
|
89
|
+
File.unlink(tmp_filename)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
desc "add APPLICATION", "Adds an application to a server"
|
94
|
+
option :user, default: "root"
|
95
|
+
option :server, type: :string, required: true
|
96
|
+
option :domain_name, type: :string, required: true
|
97
|
+
option :rails_environment, type: :string, default: "production"
|
98
|
+
option :database_adapter, type: :string, default: "mysql2"
|
99
|
+
option :database_name, type: :string, default: SecureRandom.hex(6)
|
100
|
+
option :database_user, type: :string, default: SecureRandom.hex(6)
|
101
|
+
option :database_password, type: :string, default: SecureRandom.hex()
|
102
|
+
option :database_host, type: :string, default: "127.0.0.1"
|
103
|
+
option :ruby_version, type: :string, default: "2.1.3"
|
104
|
+
def add(application)
|
105
|
+
address = options[:server]
|
106
|
+
if File.exists?("#{address}.json")
|
107
|
+
raw_json = File.read("#{address}.json")
|
108
|
+
json = JSON.parse(raw_json)
|
109
|
+
else
|
110
|
+
raise "No configuration file for this server yet! Please create one by running:\n\n$ intercity server install <ip address>\n\n"
|
111
|
+
end
|
112
|
+
|
113
|
+
json["active_applications"] ||= {}
|
114
|
+
|
115
|
+
json["active_applications"][application] ||= {}
|
116
|
+
|
117
|
+
json["active_applications"][application].merge!(
|
118
|
+
{
|
119
|
+
"domain_names" => [options[:domain_name]],
|
120
|
+
"rails_env" => options[:rails_environment],
|
121
|
+
"database_info" => {
|
122
|
+
"adapter" => options[:database_adapter],
|
123
|
+
"host" => options[:database_host],
|
124
|
+
"username" => options[:database_user],
|
125
|
+
"password" => options[:database_password],
|
126
|
+
"database" => options[:database_name]
|
127
|
+
},
|
128
|
+
"ruby_version" => options[:ruby_version]
|
129
|
+
}
|
130
|
+
)
|
131
|
+
|
132
|
+
File.open("#{address}.json", "w") do |f|
|
133
|
+
f.write(JSON.pretty_generate(json))
|
134
|
+
end
|
135
|
+
|
136
|
+
server = address
|
137
|
+
user = options[:user]
|
138
|
+
on server do |host|
|
139
|
+
with debian_frontend: :noninteractive do
|
140
|
+
host.user = user
|
141
|
+
|
142
|
+
upload! "#{address}.json", "/root/server_config.json"
|
143
|
+
|
144
|
+
execute 'chef-client -z -j ~/server_config.json -o "recipe[rails::passenger],recipe[rails::databases]"'
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "json"
|
3
|
+
require "sshkit"
|
4
|
+
|
5
|
+
module IntercityCLI
|
6
|
+
class MySQL < Thor
|
7
|
+
require "sshkit/dsl"
|
8
|
+
|
9
|
+
desc "list", "Lists MySQL databases on IPADDRESS"
|
10
|
+
option :user, default: "root"
|
11
|
+
option :server, type: :string, required: true
|
12
|
+
def list
|
13
|
+
address = options[:server]
|
14
|
+
|
15
|
+
configuration = IntercityCLI::Configuration.new()
|
16
|
+
node_file = File.join(configuration.config_directory, "#{address}.json")
|
17
|
+
|
18
|
+
raw_json = File.read(node_file)
|
19
|
+
json = JSON.parse(raw_json)
|
20
|
+
|
21
|
+
root_password = json["mysql"]["server_root_password"]
|
22
|
+
|
23
|
+
puts "Local Configuration"
|
24
|
+
puts "==================="
|
25
|
+
|
26
|
+
json["active_applications"].each do |app, config|
|
27
|
+
database_info = config["database_info"]
|
28
|
+
puts database_info.inspect
|
29
|
+
end
|
30
|
+
|
31
|
+
puts
|
32
|
+
|
33
|
+
user = options[:user]
|
34
|
+
on address do |host|
|
35
|
+
host.user = user
|
36
|
+
|
37
|
+
puts "On MySQL Server"
|
38
|
+
puts "==============="
|
39
|
+
|
40
|
+
databases = capture("mysql -u root --password=#{root_password} -e \"show databases;\"")
|
41
|
+
puts databases
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "install IPADDRESS", "Installs MySQL at IPADDRESS"
|
46
|
+
option :user, default: "root"
|
47
|
+
option :root_password, default: SecureRandom.hex(), type: :string
|
48
|
+
def install(address)
|
49
|
+
configuration = IntercityCLI::Configuration.new()
|
50
|
+
node_file = File.join(configuration.config_directory, "#{address}.json")
|
51
|
+
|
52
|
+
if File.exists?(node_file)
|
53
|
+
raw_json = File.read(node_file)
|
54
|
+
json = JSON.parse(raw_json)
|
55
|
+
else
|
56
|
+
json = {mysql: {
|
57
|
+
server_root_password: options[:root_password]
|
58
|
+
}}
|
59
|
+
end
|
60
|
+
|
61
|
+
File.open(node_file, "w") do |f|
|
62
|
+
f.write(JSON.pretty_generate(json))
|
63
|
+
end
|
64
|
+
|
65
|
+
server = address
|
66
|
+
user = options[:user]
|
67
|
+
on server do |host|
|
68
|
+
with debian_frontend: :noninteractive do
|
69
|
+
host.user = user
|
70
|
+
|
71
|
+
upload! "#{address}.json", "/root/server_config.json"
|
72
|
+
|
73
|
+
execute 'chef-client -z -j ~/server_config.json -o recipe[mysql::server]'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "sshkit"
|
3
|
+
|
4
|
+
module IntercityCLI
|
5
|
+
class Server < Thor
|
6
|
+
require "sshkit/dsl"
|
7
|
+
|
8
|
+
desc "install IPADDRESS", "Installs server at IPADDRESS"
|
9
|
+
option :user, type: :string, default: "root"
|
10
|
+
def install(address)
|
11
|
+
server = address
|
12
|
+
user = options[:user]
|
13
|
+
on server do |host|
|
14
|
+
with debian_frontend: :noninteractive do
|
15
|
+
host.user = user
|
16
|
+
|
17
|
+
execute "apt-get update"
|
18
|
+
|
19
|
+
# Install Chef via Omnibus
|
20
|
+
execute "curl -L https://www.chef.io/chef/install.sh | sudo bash"
|
21
|
+
|
22
|
+
# Install chef-repo
|
23
|
+
execute "wget https://github.com/intercity/chef-repo/releases/download/v2.3.0/cookbooks-2.3.0.tar.gz"
|
24
|
+
execute "tar zxf cookbooks-2.3.0.tar.gz"
|
25
|
+
|
26
|
+
execute "chef-client -z"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "intercity/cli/server"
|
3
|
+
require "intercity/cli/mysql"
|
4
|
+
require "intercity/cli/application"
|
5
|
+
|
6
|
+
module IntercityCLI
|
7
|
+
|
8
|
+
class Main < Thor
|
9
|
+
class_option :verbose, type: :boolean
|
10
|
+
|
11
|
+
desc "server SUBCOMMAND ARGS", "subcommands to install and configure a server"
|
12
|
+
subcommand "server", Server
|
13
|
+
|
14
|
+
desc "mysql SUBCOMMAND ARGS", "subcommands to manage mysql"
|
15
|
+
subcommand "mysql", MySQL
|
16
|
+
|
17
|
+
desc "application SUBCOMMAND ARGS", "subcommands to manage applications"
|
18
|
+
subcommand "application", Application
|
19
|
+
end
|
20
|
+
|
21
|
+
class Configuration
|
22
|
+
def initialize()
|
23
|
+
if !Dir.exists?("nodes")
|
24
|
+
Dir.mkdir("nodes")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def config_directory
|
29
|
+
File.expand_path("nodes")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: intercity
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michiel Sikkes
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRcwFQYDVQQDDA5taWNo
|
14
|
+
aWVsLnNpa2tlczEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQB
|
15
|
+
GRYDY29tMB4XDTE0MTIyNDEyNTQzM1oXDTE1MTIyNDEyNTQzM1owRTEXMBUGA1UE
|
16
|
+
AwwObWljaGllbC5zaWtrZXMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmS
|
17
|
+
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJXr
|
18
|
+
ZzV/gU/XPk6hhBs/iSn+HYGLHYnaEtVkNliKZKWLr7arKGM5pneM9rub8VaA9iKE
|
19
|
+
N2swxHngobSDouYBJcxlQabCWx8htD4nSlOXWTfFeR78jhfYS2VyysQ0dnHSjE9c
|
20
|
+
KXa8EHcg0YNPpWqWoGemb4iJENnqcGGLY67RBhkHsWj5BJO84e4hS8vsUYyAiAbV
|
21
|
+
3nO5+5EmnkWQB2fVDTL3tjY1yOdzfyvaIifwt9aKVwY0YPORIlm9RI4wtQRv9NFq
|
22
|
+
ONyougmLd5vVWp6jO1+9O6TxayzDccJLGuGB6Tw94BQo3o50yoLZew44A7VT3XC2
|
23
|
+
LQg3n8Pzuow9MtTRrC0CAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
|
24
|
+
sDAdBgNVHQ4EFgQUbb9Rb7oi1MDVYRSgxiQ33szdVCswIwYDVR0RBBwwGoEYbWlj
|
25
|
+
aGllbC5zaWtrZXNAZ21haWwuY29tMCMGA1UdEgQcMBqBGG1pY2hpZWwuc2lra2Vz
|
26
|
+
QGdtYWlsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEABVgqI2u309QC/Dgpas1eefZ5
|
27
|
+
ihSC1O8VE+5sKd+VZ3COciOAL5me1EcmHdpp+SXZv54E4IPMkLJIaeRhLN+3BzhB
|
28
|
+
+FxZuMOFHsaRFrYJhvyiZ1YaA30Rrv7Ac2Z9b19+++mKVSwwoMfTCYUHbNX1e8gy
|
29
|
+
50GjXI5RjqXz8goJnASe1sx12Dm6Hi5fWZxdnIJIU4EJGqSyfEQNDcOOILRvihdp
|
30
|
+
+MPuiRlaQjfZy/soMMERP/wuGpw6Ce94ITJ56wjQgl3YhqQPoE76KgRu4b4YwKhx
|
31
|
+
H7APPQD4vksmpWYDCN7llFs/nPaYM6lkxy7bcHRQxaA/km9IF+0iwbhv9mDdDQ==
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2015-01-24 00:00:00.000000000 Z
|
34
|
+
dependencies:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: thor
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0.19'
|
42
|
+
type: :runtime
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0.19'
|
49
|
+
description:
|
50
|
+
email: michiel.sikkes@gmail.com
|
51
|
+
executables:
|
52
|
+
- intercity
|
53
|
+
extensions: []
|
54
|
+
extra_rdoc_files: []
|
55
|
+
files:
|
56
|
+
- ".gitignore"
|
57
|
+
- README.md
|
58
|
+
- bin/intercity
|
59
|
+
- certs/michiels.pem
|
60
|
+
- intercity.gemspec
|
61
|
+
- lib/intercity/cli.rb
|
62
|
+
- lib/intercity/cli/application.rb
|
63
|
+
- lib/intercity/cli/mysql.rb
|
64
|
+
- lib/intercity/cli/server.rb
|
65
|
+
homepage: https://intercityup.com
|
66
|
+
licenses:
|
67
|
+
- MIT
|
68
|
+
metadata: {}
|
69
|
+
post_install_message:
|
70
|
+
rdoc_options: []
|
71
|
+
require_paths:
|
72
|
+
- lib
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
requirements: []
|
84
|
+
rubyforge_project:
|
85
|
+
rubygems_version: 2.2.2
|
86
|
+
signing_key:
|
87
|
+
specification_version: 4
|
88
|
+
summary: Command-line interface for hosting Rails apps on your server.
|
89
|
+
test_files: []
|
metadata.gz.sig
ADDED