nimbu 0.3 → 0.4
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/lib/nimbu/auth.rb +6 -2
- data/lib/nimbu/client.rb +1 -1
- data/lib/nimbu/command/base.rb +4 -0
- data/lib/nimbu/command/server.rb +3 -2
- data/lib/nimbu/server/base.rb +137 -102
- data/lib/nimbu/version.rb +1 -1
- data/lib/nimbu.rb +16 -0
- metadata +73 -23
data/lib/nimbu/auth.rb
CHANGED
@@ -45,11 +45,15 @@ class Nimbu::Auth
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def get_nimbu_host
|
48
|
-
|
48
|
+
if Nimbu.development
|
49
|
+
get_configuration[:development]
|
50
|
+
else
|
51
|
+
get_configuration[:hostname]
|
52
|
+
end
|
49
53
|
end
|
50
54
|
|
51
55
|
def get_nimbu_theme
|
52
|
-
get_configuration[:theme]
|
56
|
+
get_configuration[:theme] || "default-theme"
|
53
57
|
end
|
54
58
|
|
55
59
|
def get_configuration # :nodoc:
|
data/lib/nimbu/client.rb
CHANGED
@@ -233,7 +233,7 @@ class Nimbu::Client
|
|
233
233
|
uri = URI.parse(given)
|
234
234
|
uri.host ||= host.host
|
235
235
|
uri.scheme ||= host.scheme || "http"
|
236
|
-
uri.path = "/api/
|
236
|
+
uri.path = "/api/v2" + ((uri.path[0..0] == "/") ? uri.path : "/#{uri.path}")
|
237
237
|
uri.port = host.port if full_host =~ /\:\d+/
|
238
238
|
uri.to_s
|
239
239
|
end
|
data/lib/nimbu/command/base.rb
CHANGED
@@ -16,6 +16,10 @@ class Nimbu::Command::Base
|
|
16
16
|
def initialize(args=[], options={})
|
17
17
|
@args = args
|
18
18
|
@options = options
|
19
|
+
|
20
|
+
Nimbu.debug = args.include?("--debug")
|
21
|
+
Nimbu.development = args.include?("--development") || args.include?("--dev")
|
22
|
+
Nimbu.v2 = args.include?("--v2")
|
19
23
|
end
|
20
24
|
|
21
25
|
def app
|
data/lib/nimbu/command/server.rb
CHANGED
@@ -20,7 +20,6 @@ class Nimbu::Command::Server < Nimbu::Command::Base
|
|
20
20
|
else
|
21
21
|
no_haml = args.include?("--no-haml")
|
22
22
|
no_compass = args.include?("--no-compass")
|
23
|
-
Nimbu.debug = args.include?("--debug")
|
24
23
|
|
25
24
|
if !(File.exists?(File.join(Dir.pwd,'haml')) && File.directory?(File.join(Dir.pwd,'haml')))
|
26
25
|
no_haml = true
|
@@ -29,12 +28,14 @@ class Nimbu::Command::Server < Nimbu::Command::Base
|
|
29
28
|
|
30
29
|
puts white("\nStarting up Nimbu Server" + (no_compass ? "" : " + Compass Watcher") + (no_haml ? "" : " + HAML Compiler") + "...")
|
31
30
|
puts green(
|
32
|
-
" _ ___ __ \n" +
|
31
|
+
"\n _ ___ __ \n" +
|
33
32
|
" / | / (_)____ ___ / /_ __ __\n" +
|
34
33
|
" / |/ / // __ `__ \\/ __ \\/ / / /\n" +
|
35
34
|
" / /| / // / / / / / /_/ / /_/ / \n" +
|
36
35
|
" /_/ |_/_//_/ /_/ /_/_.___/\\__,_/ \n")
|
37
36
|
|
37
|
+
puts green("\nConnnected to '#{Nimbu::Auth.host}', using '#{Nimbu::Auth.theme}' theme.\n")
|
38
|
+
|
38
39
|
rd1, wr1 = IO::pipe
|
39
40
|
rd2, wr2 = IO::pipe
|
40
41
|
rd3, wr3 = IO::pipe
|
data/lib/nimbu/server/base.rb
CHANGED
@@ -14,12 +14,11 @@ module Nimbu
|
|
14
14
|
include Term::ANSIColor
|
15
15
|
register Sinatra::MultiRoute
|
16
16
|
|
17
|
-
enable :sessions
|
18
|
-
|
19
17
|
configure :development do
|
20
18
|
register Sinatra::Reloader
|
21
19
|
end
|
22
20
|
|
21
|
+
set :method_override, true
|
23
22
|
set :static, true # set up static file routing
|
24
23
|
set :public_folder, Dir.pwd # set up the static dir (with images/js/css inside)
|
25
24
|
|
@@ -57,14 +56,60 @@ module Nimbu
|
|
57
56
|
)
|
58
57
|
puts green("#{method.upcase} #{request.fullpath}")
|
59
58
|
|
60
|
-
if request.post? || request.put? || request.delete?
|
61
|
-
|
62
|
-
|
59
|
+
# if request.post? || request.put? || request.delete?
|
60
|
+
# ##### POST / PUT / DELET #####
|
61
|
+
# path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
|
62
|
+
# begin
|
63
|
+
# response = nimbu.post_request({:path => path, :extra => params, :method => method, :client_session => session, :ajax => request.xhr? })
|
64
|
+
# puts "RESPONSE: #{response}" if Nimbu.debug
|
65
|
+
# result = json_decode(response)
|
66
|
+
# parse_session(result)
|
67
|
+
# rescue Exception => e
|
68
|
+
# if e.respond_to?(:http_body)
|
69
|
+
# return e.http_body
|
70
|
+
# else
|
71
|
+
# raise e
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
|
75
|
+
# session[:flash] = result["flash"] if result["flash"]
|
76
|
+
# if request.xhr?
|
77
|
+
# if !result["json"].nil?
|
78
|
+
# puts "JSON: #{result["json"]["data"]}" if Nimbu.debug
|
79
|
+
# status result["json"]["status"].to_i
|
80
|
+
# return json(result["json"]["data"], :encoder => :to_json, :content_type => :js)
|
81
|
+
# end
|
82
|
+
# else
|
83
|
+
# redirect result["redirect_to"] and return if result["redirect_to"]
|
84
|
+
# end
|
85
|
+
# else
|
86
|
+
# # First get the template name and necessary subtemplates
|
87
|
+
# ##### GET #####
|
88
|
+
# path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
|
89
|
+
# begin
|
90
|
+
# result = json_decode(nimbu.get_template({:path => path, :extra => params, :method => "get", :extra => params, :client_session => session, :ajax => request.xhr? }))
|
91
|
+
# puts result if Nimbu.debug
|
92
|
+
# parse_session(result)
|
93
|
+
# rescue Exception => e
|
94
|
+
# return e.http_body
|
95
|
+
# end
|
96
|
+
|
97
|
+
# redirect result["redirect_to"] and return if result["redirect_to"]
|
98
|
+
# end
|
99
|
+
### GET THE TEMPLATES ###
|
100
|
+
path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
|
101
|
+
if !request.xhr?
|
63
102
|
begin
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
103
|
+
params = ({} || params).merge({:simulator => {
|
104
|
+
:host => request.host,
|
105
|
+
:port => request.port,
|
106
|
+
:path => path,
|
107
|
+
:method => method,
|
108
|
+
:session => session,
|
109
|
+
:headers => request.env.to_json,
|
110
|
+
}})
|
111
|
+
result = json_decode(nimbu.get_template(params))
|
112
|
+
puts result if Nimbu.debug
|
68
113
|
rescue Exception => e
|
69
114
|
if e.respond_to?(:http_body)
|
70
115
|
return e.http_body
|
@@ -72,100 +117,90 @@ module Nimbu
|
|
72
117
|
raise e
|
73
118
|
end
|
74
119
|
end
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
if !result["json"].nil?
|
79
|
-
puts "JSON: #{result["json"]["data"]}" if Nimbu.debug
|
80
|
-
status result["json"]["status"].to_i
|
81
|
-
return json(result["json"]["data"], :encoder => :to_json, :content_type => :js)
|
82
|
-
end
|
83
|
-
else
|
84
|
-
redirect result["redirect_to"] and return if result["redirect_to"]
|
85
|
-
end
|
86
|
-
else
|
87
|
-
# First get the template name and necessary subtemplates
|
88
|
-
##### GET #####
|
89
|
-
path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
|
90
|
-
begin
|
91
|
-
result = json_decode(nimbu.get_template({:path => path, :extra => params, :method => "get", :extra => params, :client_session => session, :ajax => request.xhr? }))
|
92
|
-
puts result if Nimbu.debug
|
93
|
-
parse_session(result)
|
94
|
-
rescue Exception => e
|
95
|
-
return e.http_body
|
120
|
+
|
121
|
+
if result["template"].nil?
|
122
|
+
raise Sinatra::NotFound
|
96
123
|
end
|
97
124
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
if File.exists?(template_file)
|
111
|
-
template_code = IO.read(template_file)
|
112
|
-
else
|
113
|
-
puts red("Layout file '#{template_file}' is missing...")
|
114
|
-
return render_missing(File.join('templates',template),'template')
|
115
|
-
end
|
125
|
+
unless result["template"] == "<<<< REDIRECT >>>>"
|
126
|
+
template = result["template"].gsub(/buddha$/,'liquid')
|
127
|
+
# Then render everything
|
128
|
+
puts green(" => using template '#{template}'")
|
129
|
+
# Read the template file
|
130
|
+
template_file = File.join(Dir.pwd,'templates',template)
|
131
|
+
if File.exists?(template_file)
|
132
|
+
template_code = IO.read(template_file)
|
133
|
+
else
|
134
|
+
puts red("Layout file '#{template_file}' is missing...")
|
135
|
+
return render_missing(File.join('templates',template),'template')
|
136
|
+
end
|
116
137
|
|
117
|
-
|
118
|
-
|
119
|
-
|
138
|
+
if template_code=~ /You have an Error in your HAML code/
|
139
|
+
return template_code
|
140
|
+
end
|
120
141
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
142
|
+
# Parse template file for a special layout
|
143
|
+
search = Regexp.new("\{\% layout \'(.*)\' \%\}")
|
144
|
+
if search =~ template_code
|
145
|
+
# There seems to be a special layout?
|
146
|
+
layout = $1
|
147
|
+
else
|
148
|
+
layout = 'default.liquid'
|
149
|
+
end
|
129
150
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
151
|
+
# Read the layout file
|
152
|
+
layout_file = File.join(Dir.pwd,'layouts',layout)
|
153
|
+
if File.exists?(layout_file)
|
154
|
+
layout_code = IO.read(layout_file)
|
155
|
+
else
|
156
|
+
puts red("Layout file '#{layout_file}' is missing...")
|
157
|
+
return render_missing(File.join('layouts',layout),'layout')
|
158
|
+
end
|
138
159
|
|
139
|
-
|
160
|
+
puts green(" using layout '#{layout}'")
|
140
161
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
162
|
+
begin
|
163
|
+
snippets = parse_snippets(template_code)
|
164
|
+
snippets = parse_snippets(layout_code,snippets)
|
165
|
+
rescue Exception => e
|
166
|
+
# If there is a snippet missing, we raise an error
|
167
|
+
puts red("Snippet file '#{e.message}' is missing...")
|
168
|
+
return render_missing(e.message,'snippet')
|
169
|
+
end
|
149
170
|
|
150
|
-
|
151
|
-
|
171
|
+
if snippets.any?
|
172
|
+
puts green(" using snippets '#{snippets.keys.join('\', \'')}'")
|
173
|
+
end
|
174
|
+
end
|
175
|
+
else
|
176
|
+
template_file = ""
|
152
177
|
end
|
153
178
|
|
154
179
|
# Send the templates to the browser
|
155
180
|
begin
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
181
|
+
params = ({} || params).merge({:simulator => {
|
182
|
+
:path => path,
|
183
|
+
:template => template_code,
|
184
|
+
:host => request.host,
|
185
|
+
:port => request.port,
|
186
|
+
:layout => layout_code,
|
187
|
+
:snippets => snippets,
|
188
|
+
:method => method,
|
189
|
+
:session => session,
|
190
|
+
:headers => request.env.to_json,
|
191
|
+
}})
|
192
|
+
results = json_decode(nimbu.get_request(params))
|
193
|
+
puts results["status"] if Nimbu.debug
|
194
|
+
puts results["headers"] if Nimbu.debug
|
195
|
+
puts results["body"].gsub(/\n/,'') if Nimbu.debug
|
196
|
+
|
197
|
+
status results["status"]
|
198
|
+
headers results["headers"] unless results["headers"] == ""
|
199
|
+
body results["body"]
|
160
200
|
rescue RestClient::Exception => error
|
201
|
+
puts "Error! #{error.http_body}"
|
161
202
|
html = error.http_body
|
162
|
-
end
|
163
|
-
|
164
|
-
if request.xhr?
|
165
|
-
return results["json"]
|
166
|
-
else
|
167
|
-
return "#{html}"
|
168
|
-
end
|
203
|
+
end
|
169
204
|
end
|
170
205
|
|
171
206
|
error 404 do
|
@@ -226,19 +261,19 @@ module Nimbu
|
|
226
261
|
Nimbu::Auth.client
|
227
262
|
end
|
228
263
|
|
229
|
-
def parse_session(response)
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
end
|
264
|
+
# def parse_session(response)
|
265
|
+
# if !response["session"].nil?
|
266
|
+
# response["session"].each do |key,value|
|
267
|
+
# session[key.to_sym] = value
|
268
|
+
# #puts "Session: :#{key} => #{value}" if Nimbu.debug
|
269
|
+
# end
|
270
|
+
# session.each do |key,value|
|
271
|
+
# if !response["session"].has_key?(key.to_s)
|
272
|
+
# session.delete(key)
|
273
|
+
# end
|
274
|
+
# end
|
275
|
+
# end
|
276
|
+
# end
|
242
277
|
|
243
278
|
def parse_snippets(code, snippets = {})
|
244
279
|
# Parse template file for snippets
|
data/lib/nimbu/version.rb
CHANGED
data/lib/nimbu.rb
CHANGED
@@ -9,4 +9,20 @@ module Nimbu
|
|
9
9
|
def self.debug
|
10
10
|
@@debug
|
11
11
|
end
|
12
|
+
|
13
|
+
def self.development=(value)
|
14
|
+
@@development = value
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.development
|
18
|
+
@@development
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.v2=(value)
|
22
|
+
@@v2 = value
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.v2
|
26
|
+
@@v2
|
27
|
+
end
|
12
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nimbu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term-ansicolor
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 1.0.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.5
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rest-client
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.6.1
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.1
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: launchy
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 0.3.2
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.3.2
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rubyzip
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: sinatra
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :runtime
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: sinatra-contrib
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :runtime
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: compass
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :runtime
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: haml
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: '0'
|
99
134
|
type: :runtime
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: fssm
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,10 +149,15 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :runtime
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
- !ruby/object:Gem::Dependency
|
114
159
|
name: thin
|
115
|
-
requirement:
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
116
161
|
none: false
|
117
162
|
requirements:
|
118
163
|
- - ! '>='
|
@@ -120,7 +165,12 @@ dependencies:
|
|
120
165
|
version: '0'
|
121
166
|
type: :runtime
|
122
167
|
prerelease: false
|
123
|
-
version_requirements:
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
124
174
|
description: Client library and command-line tool to design and manage websites on
|
125
175
|
the Nimbu platform.
|
126
176
|
email:
|
@@ -169,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
219
|
version: '0'
|
170
220
|
requirements: []
|
171
221
|
rubyforge_project:
|
172
|
-
rubygems_version: 1.8.
|
222
|
+
rubygems_version: 1.8.23
|
173
223
|
signing_key:
|
174
224
|
specification_version: 3
|
175
225
|
summary: Client library and CLI to design websites on the Nimbu platform.
|