mini-heroku 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mini-heroku.rb +59 -50
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd91fcfa20f2fe1bbd25eeafbdeda695c382d5d0
|
4
|
+
data.tar.gz: 8319d32570abb4bef06a2674f28f54af9483a583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cef6950a50a94026fa9462c76f20124192b0d9ad8201abb3f6ab4bc8c9687bf51179986fa029c9ba55379effe65723290d9930450771707e574e05428f392597
|
7
|
+
data.tar.gz: 4178b1287d394d4be75e6d4086880d6a9a9d87f7bf3eaf67c75bb6df265bfb8d40bd68d87f9c7f454503593a77f7a736b3749bc562164d9e2e53eb3afc3e4d89
|
data/lib/mini-heroku.rb
CHANGED
@@ -2,26 +2,41 @@ require "rubygems"
|
|
2
2
|
require "json"
|
3
3
|
|
4
4
|
module MiniHeroku
|
5
|
-
|
6
5
|
DEFAULT_PROCFILE = "web: bundle exec ruby server.rb -p $PORT"
|
7
|
-
|
8
|
-
DEFAULT_GITIGNORE = [".env","mhenvironment.json"].join("\n")
|
6
|
+
DEFAULT_GITIGNORE = ["mhenvironment.json"].join("\n")
|
9
7
|
DEFAULT_SERVER = [
|
10
8
|
"require 'sinatra'",
|
9
|
+
"require 'mini-heroku'",
|
11
10
|
"",
|
12
11
|
"get '/' do",
|
13
|
-
" \"Hello world! Your variable defaultKey is (probably empty): \#{
|
12
|
+
" \"Hello world! Your variable defaultKey is (probably empty): \#{MH.env('defaultKey')} \#{MH.env('defaultKey').inspect}\"",
|
14
13
|
"end"
|
15
14
|
]
|
16
15
|
DEFAULT_CONFIG = {
|
17
16
|
devUsesProdEnviromnent: true,
|
17
|
+
mhVersion: "0.2.1",
|
18
18
|
environmentKeys: [
|
19
19
|
:defaultKey
|
20
|
-
]
|
20
|
+
],
|
21
|
+
customGems: {
|
22
|
+
"rack/ssl": "rack-ssl"
|
23
|
+
}
|
21
24
|
}
|
22
25
|
|
26
|
+
def self.readJSON(filename)
|
27
|
+
return JSON.parse(File.read(filename), :symbolize_names => true)
|
28
|
+
end
|
29
|
+
|
23
30
|
def self.start()
|
24
|
-
|
31
|
+
puts "MH: Loading environment"
|
32
|
+
environment = :development
|
33
|
+
environment = readJSON("mhconfig.json")[:devUsesProdEnviromnent] ? :production : :development
|
34
|
+
environment = readJSON("mhenvironment.json")[environment]
|
35
|
+
environment.each do |key, val|
|
36
|
+
ENV[key.to_s] = val.gsub("\n", "\\n")
|
37
|
+
end
|
38
|
+
puts "MH: Starting server"
|
39
|
+
system("ruby server.rb")
|
25
40
|
end
|
26
41
|
|
27
42
|
def self.create(name)
|
@@ -35,7 +50,7 @@ module MiniHeroku
|
|
35
50
|
installed = `gem list`.split("\n")
|
36
51
|
installed.map! do |g|
|
37
52
|
name, rest = g.split(" (")
|
38
|
-
version = rest.scan(
|
53
|
+
version = rest.scan(/^(\D)*((\d|\.)*)/)[0][1]
|
39
54
|
[name, version]
|
40
55
|
end
|
41
56
|
return Hash[installed]
|
@@ -44,9 +59,11 @@ module MiniHeroku
|
|
44
59
|
def self.refresh()
|
45
60
|
#config
|
46
61
|
config = DEFAULT_CONFIG
|
47
|
-
if File.file?("mhconfig.json")
|
48
|
-
config.merge!(
|
49
|
-
puts("MH:
|
62
|
+
if File.file?("mhconfig.json")
|
63
|
+
config.merge!(readJSON("mhconfig.json"))
|
64
|
+
puts("MH: Found config")
|
65
|
+
else
|
66
|
+
puts "MH: Creating default config"
|
50
67
|
end
|
51
68
|
File.open("mhconfig.json", "wb") do |f|
|
52
69
|
f.write JSON.pretty_generate(config)
|
@@ -63,77 +80,71 @@ module MiniHeroku
|
|
63
80
|
end
|
64
81
|
if File.file?("mhenvironment.json")
|
65
82
|
puts "MH: Found environment"
|
66
|
-
old =
|
67
|
-
environment.merge(old)
|
83
|
+
old = readJSON("mhenvironment.json")
|
84
|
+
environment.merge!(old)
|
68
85
|
else
|
69
|
-
puts "MH: Creating environment"
|
86
|
+
puts "MH: Creating default environment"
|
70
87
|
end
|
71
88
|
File.open("mhenvironment.json", "wb") do |f|
|
72
89
|
f.write(JSON.pretty_generate(environment))
|
73
90
|
end
|
74
91
|
|
75
|
-
#env file
|
76
|
-
File.open(".env", "w") do |f|
|
77
|
-
vars = {}
|
78
|
-
if config[:devUsesProdEnviromnent]
|
79
|
-
vars = environment[:production]
|
80
|
-
else
|
81
|
-
vars = environment[:development]
|
82
|
-
end
|
83
|
-
vars.each do |key, value|
|
84
|
-
f.puts("#{key}=#{value}")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
92
|
#procfile
|
89
93
|
if File.file?("Procfile")
|
90
|
-
puts "MH:
|
94
|
+
puts "MH: Found procfile"
|
91
95
|
else
|
92
|
-
puts "MH: Creating
|
96
|
+
puts "MH: Creating default procfile"
|
93
97
|
File.open("Procfile", "w") do |f|
|
94
98
|
f.puts(DEFAULT_PROCFILE)
|
95
99
|
end
|
96
100
|
end
|
97
101
|
|
98
|
-
if File.file?("Procfile.dev")
|
99
|
-
puts "MH: Dev Procfile found"
|
100
|
-
else
|
101
|
-
puts "MH: Creating Dev Procfile"
|
102
|
-
File.open("Procfile.dev", "w") do |f|
|
103
|
-
f.puts(DEFAULT_PROCFILE_DEV)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
102
|
#gitignore
|
108
103
|
if File.file?(".gitignore")
|
109
|
-
puts "MH: .gitignore
|
104
|
+
puts "MH: Found .gitignore"
|
110
105
|
else
|
111
|
-
puts "MH: Creating .gitignore"
|
106
|
+
puts "MH: Creating default .gitignore"
|
112
107
|
File.open(".gitignore", "w") do |f|
|
113
108
|
f.puts(DEFAULT_GITIGNORE)
|
114
109
|
end
|
115
110
|
end
|
116
111
|
|
117
112
|
#gems
|
118
|
-
gems = ["sinatra"]
|
113
|
+
gems = ["sinatra", "mini-heroku"]
|
114
|
+
files = ["server"]
|
119
115
|
if File.file?("server.rb")
|
120
|
-
puts "MH:
|
121
|
-
|
122
|
-
|
116
|
+
puts "MH: Found server file, checking gems" #^(\s*?)(require(\s*?)("|'))(\.\/)(.*?)("|')
|
117
|
+
until files.size == 0
|
118
|
+
filename = files.pop
|
119
|
+
for line in File.read(filename + ".rb").split("\n") do
|
120
|
+
# (start of line)(any amount of indentation)(begin quote)(gem name, but not .)(end quote)
|
121
|
+
gem = line.scan(/^(\s*?)(require(\s*?)("|'))([^\.]*?)("|')/).dig(0, 4)
|
122
|
+
gems << gem if gem
|
123
|
+
file = line.scan(/^(\s*?)(require(\s*?)("|'))(\.\/)(.*?)("|')/).dig(0, 5)
|
124
|
+
files << file.gsub(".rb", "") if file
|
125
|
+
file = line.scan(/^(\s*?)(require_relative(\s*?)("|'))(.*?)("|')/).dig(0, 4)
|
126
|
+
files << file.gsub(".rb", "") if file
|
127
|
+
end
|
123
128
|
end
|
124
|
-
gems.
|
129
|
+
gems.uniq!
|
125
130
|
else
|
126
|
-
puts "MH: Creating
|
131
|
+
puts "MH: Creating default server file"
|
127
132
|
File.open("server.rb", "w") do |f|
|
128
133
|
f.puts(DEFAULT_SERVER)
|
129
134
|
end
|
130
135
|
end
|
136
|
+
config[:customGems].each do |key, val|
|
137
|
+
if gems.include?(key.to_s)
|
138
|
+
gems.delete(key.to_s)
|
139
|
+
gems << val.to_s
|
140
|
+
end
|
141
|
+
end
|
131
142
|
installedGems = getGems()
|
132
143
|
didInstall = false
|
133
144
|
for gem in gems
|
134
145
|
if !(installedGems.keys.include?(gem))
|
135
146
|
puts "MH: Installing Gem #{gem}"
|
136
|
-
system("gem install #{gem}")
|
147
|
+
system("gem install #{gem} --no-document")
|
137
148
|
didInstall = true
|
138
149
|
end
|
139
150
|
end
|
@@ -156,7 +167,7 @@ module MiniHeroku
|
|
156
167
|
end
|
157
168
|
|
158
169
|
def self.setProductionEnvironment()
|
159
|
-
environment =
|
170
|
+
environment = readJSON("mhenvironment.json")[:production]
|
160
171
|
out = "heroku config:set"
|
161
172
|
environment.each do |key, val|
|
162
173
|
out += " #{key}=\"#{val.gsub("\n", "\\n")}\""
|
@@ -178,6 +189,4 @@ module MiniHeroku
|
|
178
189
|
return ENV[key].gsub("\\n", "\n")
|
179
190
|
end
|
180
191
|
end
|
181
|
-
MH = MiniHeroku
|
182
|
-
#MiniHeroku.create("mini-heroku-test")
|
183
|
-
#MiniHeroku.setProductionEnvironment()
|
192
|
+
MH = MiniHeroku
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini-heroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Larsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Makes it easy to create, update and
|
13
|
+
description: Makes it easy to create, update and deploy a sinatra webserver to heroku.
|
14
14
|
Be warned, this gem might run over your files if something goes worng. see 'mh help'
|
15
15
|
for commands
|
16
16
|
email: martin.99.larsson@telia.com
|