rocketio 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac617b26c0a9352ff073f5e194202d8e09f90c4c
4
- data.tar.gz: 1e9aa0b25987687e5d1b25193bfb60bf014e6fa2
3
+ metadata.gz: ea0d4a3075d390c8d228df3bd4325dbfedf0fa2a
4
+ data.tar.gz: 2036177712149f499001e173e754aedf2dbba5b3
5
5
  SHA512:
6
- metadata.gz: 143b5e6041e82d762c8a55ad0d4fc759bbd05a5cbaddca814141c76cd04fabc07ae17df6e168525b3f518ec3944140ebc18ce9275be13765dfdd8f70ff363489
7
- data.tar.gz: 9e087b5c7c644b4a84ac5830824537902710ea8d3203e882e08b33139184ee6802960d4a85819e173c9360fa9369be29a8dac71a2c69d0c7e204a57ca6d4566e
6
+ metadata.gz: 7ed5c73407168bcf5e7765fdcc23b13f3419dda752d55eaa912bcd262a6d4d770c22c99c1410ab670cce0774582aaa5a882e00368234d7fd7950bd1406ba79a4
7
+ data.tar.gz: fe411c3cc506dccfae0de5c0ec0d345f7f82589202ca4fed0e20fb6905558e4f8cbeb8309bceb2da98099529c5240edcd1d6c6b2ef1748755d0b14c6141af3ee
@@ -21,9 +21,8 @@ module RocketIO
21
21
  }.freeze
22
22
 
23
23
  environment = ENV['APP_ENV'] || ENV['RACK_ENV'] || ENVIRONMENTS.values[0]
24
- unless ENVIRONMENT = ENVIRONMENTS[environment]
25
- raise(StandardError, '%s environment not supported. Use one of %s' % [environment.inspect, ENVIRONMENTS.keys*', '])
26
- end
24
+ ENVIRONMENT = ENVIRONMENTS[environment]
25
+ ENVIRONMENT || raise(StandardError, '%s environment not supported. Use one of %s' % [environment.inspect, ENVIRONMENTS.keys*', '])
27
26
 
28
27
  def environment
29
28
  ENVIRONMENT
@@ -33,47 +32,41 @@ module RocketIO
33
32
  define_method(env + '?') {ENVIRONMENT == env}
34
33
  end
35
34
 
36
- GET = 'GET'.freeze
37
- POST = 'POST'.freeze
38
- PUT = 'PUT'.freeze
39
- DELETE = 'DELETE'.freeze
40
- HEAD = 'HEAD'.freeze
41
-
42
35
  REQUEST_METHODS = {
43
- GET => :get,
44
- POST => :post,
45
- PUT => :put,
46
- DELETE => :delete,
47
- HEAD => :head
36
+ (GET = 'GET'.freeze) => :get,
37
+ (POST = 'POST'.freeze) => :post,
38
+ (PUT = 'PUT'.freeze) => :put,
39
+ (DELETE = 'DELETE'.freeze) => :delete,
40
+ (HEAD = 'HEAD'.freeze) => :head
48
41
  }.freeze
49
42
 
50
43
  INDEX_METHOD = :index
51
44
 
52
- EMPTY_STRING = ''.freeze
45
+ EMPTY_STRING = ''.freeze
53
46
  EMPTY_STRING_PROC = proc {RocketIO::EMPTY_STRING}
54
- EMPTY_ARRAY = [].freeze
55
- EMPTY_HASH = {}.freeze
47
+ EMPTY_ARRAY = [].freeze
48
+ EMPTY_HASH = {}.freeze
56
49
 
57
- SLASH = '/'.freeze
58
- QUERY_PREFIX = '?'.freeze
50
+ SLASH = '/'.freeze
51
+ QUERY_PREFIX = '?'.freeze
59
52
  PATH_SPLITTER = /[^\/]+/.freeze
60
53
 
61
- CONTENT_TYPE = 'Content-Type'.freeze
62
- DEFAULT_CONTENT_TYPE = 'text/html'.freeze
63
- CONTENT_LENGTH = 'Content-Length'.freeze
64
- CONTENT_DISPOSITION = 'Content-Disposition'.freeze
54
+ CONTENT_TYPE = 'Content-Type'.freeze
55
+ DEFAULT_CONTENT_TYPE = 'text/html'.freeze
56
+ CONTENT_LENGTH = 'Content-Length'.freeze
57
+ CONTENT_DISPOSITION = 'Content-Disposition'.freeze
65
58
 
66
59
  APPLICATION_OCTET_STREAM = 'application/octet-stream'.freeze
67
- APPLICATION_JSON = 'application/json'.freeze
68
- APPLICATION_JSON_REGEXP = /application\/json/i
60
+ APPLICATION_JSON = 'application/json'.freeze
61
+ APPLICATION_JSON_REGEXP = /application\/json/i
69
62
 
70
- DEFAULT_AUTH_REALM = 'AccessRestricted'.freeze
63
+ DEFAULT_AUTH_REALM = 'AccessRestricted'.freeze
71
64
  DEFAULT_TOKEN_AUTH_REALM = 'Application'.freeze
72
65
 
73
66
  REQUEST_METHOD = 'REQUEST_METHOD'.freeze
74
- PATH_INFO = 'PATH_INFO'.freeze
75
- HTTP_ACCEPT = 'HTTP_ACCEPT'.freeze
76
- REMOTE_USER = 'REMOTE_USER'.freeze
67
+ PATH_INFO = 'PATH_INFO'.freeze
68
+ HTTP_ACCEPT = 'HTTP_ACCEPT'.freeze
69
+ REMOTE_USER = 'REMOTE_USER'.freeze
77
70
 
78
71
  HTTP_CONTENT_TYPE = 'CONTENT_TYPE'.freeze
79
72
  HTTP_CONNECTION = 'HTTP_CONNECTION'.freeze
@@ -124,15 +117,18 @@ module RocketIO
124
117
  BEFORE_FORMAT = 'before_%s'.freeze
125
118
  AROUND_FORMAT = 'around_%s'.freeze
126
119
  AFTER_FORMAT = 'after_%s'.freeze
127
- ROUTE_INSPECT_FORMAT = '#<RocketIO::Route:%s>'.freeze
128
- ENGINE_CONST_FORMAT = '%sTemplate'.freeze
129
- TEMPLATE_PATH_FORMAT = '%s/%s.%s'.freeze
130
-
131
- FOUND_TEMPLATES = {}
132
- READ_TEMPLATES = {}
133
- COMPILED_TEMPLATES = {}
134
120
 
135
- DEFAULT_ENGINE = [Tilt::ERBTemplate, [].freeze].freeze
121
+ INHERITABLE_SETUPS = [
122
+ :before,
123
+ :around,
124
+ :after,
125
+ :basic_auth,
126
+ :digest_auth,
127
+ :token_auth,
128
+ :error_handlers,
129
+ :middleware,
130
+ :sessions,
131
+ ]
136
132
 
137
133
  def controllers
138
134
  @controllers ||= []
@@ -140,7 +136,6 @@ module RocketIO
140
136
  end
141
137
 
142
138
  require 'rocketio/util'
143
- require 'rocketio/exceptions'
144
139
  require 'rocketio/controller'
145
140
  require 'rocketio/router'
146
141
  require 'rocketio/application'
@@ -16,7 +16,7 @@ module RocketIO
16
16
  unless controller
17
17
  controller = Controller.new
18
18
  controller.instance_variable_set(:@__env__, env)
19
- controller.error(404)
19
+ return controller.error(404)
20
20
  end
21
21
 
22
22
  controller = controller.new(method, path_params)
@@ -6,7 +6,6 @@ module RocketIO
6
6
  def_delegators :request, :session, :request_method
7
7
  def_delegators RocketIO, :environment
8
8
  def_delegators RocketIO, :indifferent_params, :indifferent_hash, :mime_type
9
- def_delegators RocketIO, :engine_const, :engine_class
10
9
  def_delegators CGI, :escape_html
11
10
 
12
11
  # defining instance helpers for querying current environment like
@@ -15,9 +14,11 @@ module RocketIO
15
14
  def_delegators RocketIO, :"#{env}?"
16
15
  end
17
16
 
18
- def initialize requested_method = RocketIO::INDEX_METHOD, path_params = RocketIO::EMPTY_ARRAY
17
+ def initialize requested_method = RocketIO::INDEX_METHOD, path_params = nil
19
18
  @__requested_method__ = requested_method.to_sym
20
- @__path_params_array__ = path_params.freeze
19
+
20
+ @__path_params_array__ = path_params || RocketIO::EMPTY_ARRAY
21
+ @__path_params_array__.freeze
21
22
  end
22
23
 
23
24
  # call requested method
@@ -25,9 +26,8 @@ module RocketIO
25
26
  # @param [Hash] env
26
27
  # @return [Rack::Response]
27
28
  #
28
- def call env, params: nil
29
+ def call env
29
30
  @__env__ = env
30
- @__params__ = params if params
31
31
  catch :__response__ do
32
32
 
33
33
  api[requested_method] || error(501)
@@ -141,22 +141,7 @@ module RocketIO
141
141
  base.instance_variable_set(:@__api__, self.api.dup)
142
142
 
143
143
  # new controller inherits all setups from superclass
144
- base.import :before, from: self
145
- base.import :around, from: self
146
- base.import :after, from: self
147
-
148
- base.import :basic_auth, from: self
149
- base.import :digest_auth, from: self
150
- base.import :token_auth, from: self
151
-
152
- base.import :error_handlers, from: self
153
- base.import :middleware, from: self
154
- base.import :sessions, from: self
155
-
156
- base.import :engine, from: self
157
- base.import :layout, from: self
158
- base.import :layouts, from: self
159
- base.import :templates, from: self
144
+ RocketIO::INHERITABLE_SETUPS.each {|s| base.import(s, from: self)}
160
145
 
161
146
  # removing superclass name from new controller name
162
147
  path = RocketIO.underscore(base.name.to_s.sub(self.name.to_s + '::', '').gsub('::', '/'))
@@ -180,10 +165,10 @@ module RocketIO
180
165
  #
181
166
  # @note
182
167
  #
183
- # @example make Users::Register to listen on /users/join rather than /users/register
168
+ # @example make Users::Register to listen on /users/join instead of /users/register
184
169
  #
185
170
  # class Users
186
- # class Register < RocketIO
171
+ # class Register < RocketIO::Controller
187
172
  # map :join
188
173
  #
189
174
  # end
@@ -191,9 +176,9 @@ module RocketIO
191
176
  #
192
177
  # @note if given URL starts with a slash it will ignore class name and set URL as is
193
178
  #
194
- # @example make Users::Register to listen on /members/join
179
+ # @example make Users::Register to listen on /members/join instead of /users/register
195
180
  #
196
- # class Users < RocketIO
181
+ # class Users < RocketIO::Controller
197
182
  # class Register < self
198
183
  # map '/members/join'
199
184
  #
@@ -215,7 +200,14 @@ module RocketIO
215
200
  end.freeze
216
201
  end
217
202
 
218
- # allow controllers to serve multiple URLs
203
+ # allow same controller to serve multiple URLs
204
+ #
205
+ # @example Users controller will serve both /users and /members URLs
206
+ #
207
+ # class Users < RocketIO::Controller
208
+ # alias_url :members
209
+ #
210
+ # end
219
211
  #
220
212
  # @param path [String || Symbol]
221
213
  #
@@ -296,4 +288,3 @@ require 'rocketio/controller/request'
296
288
  require 'rocketio/controller/response'
297
289
  require 'rocketio/controller/sessions'
298
290
  require 'rocketio/controller/websocket'
299
- require 'rocketio/controller/render'
@@ -274,9 +274,8 @@ module RocketIO
274
274
 
275
275
  last_modified(opts[:last_modified]) if opts[:last_modified]
276
276
 
277
- file = Rack::File.new(nil)
278
- file.path = path
279
- result = file.serving(env)
277
+ file = Rack::File.new(nil)
278
+ result = file.serving(request, path)
280
279
  result[1].each { |k,v| headers[k] ||= v }
281
280
  headers[RocketIO::CONTENT_LENGTH] = result[1][RocketIO::CONTENT_LENGTH]
282
281
  opts[:status] &&= Integer(opts[:status])
@@ -8,23 +8,23 @@ module RocketIO
8
8
 
9
9
  def initialize *controllers
10
10
  @controllers = controllers.flatten.compact.uniq
11
- @controller_routes = controller_routes()
11
+ @routes = routes()
12
12
  freeze!
13
13
  end
14
14
 
15
15
  # fully traversing the tree and use the last matched controller
16
16
  def resolve_path path
17
- controller_routes = @controller_routes
17
+ routes = @routes
18
18
  pieces = path_pieces(path)
19
19
  depth = -1
20
20
  controller = nil
21
21
  path_params = []
22
22
 
23
- while controller_routes = controller_routes[pieces[depth += 1]]
24
- # do not use `next unless controller = controller_routes[0]` here
23
+ while routes = routes[pieces[depth += 1]]
24
+ # do not use `next unless controller = routes[0]` here
25
25
  # cause this may override earlier found controller.
26
- next unless controller_routes[0]
27
- controller = controller_routes[0]
26
+ next unless routes[0]
27
+ controller = routes[0]
28
28
  path_params = pieces[ (depth + 1) .. -1 ]
29
29
  end
30
30
 
@@ -43,7 +43,7 @@ module RocketIO
43
43
  # split given path into an array
44
44
  #
45
45
  # @example /a/b/c
46
- # ["", a", "b", "c"]
46
+ # ["", "a", "b", "c"]
47
47
  #
48
48
  # @param path [String]
49
49
  # @return [Array]
@@ -53,11 +53,11 @@ module RocketIO
53
53
  path.to_s.split(PATH_SPLITTER)
54
54
  end
55
55
 
56
- # building a routing tree
56
+ # building routes tree
57
57
  #
58
58
  # @return [Hash]
59
59
  #
60
- def controller_routes
60
+ def routes
61
61
  controllers.each_with_object({}) do |controller,map|
62
62
  [controller.url, *controller.aliases].each do |url|
63
63
  depth = 0
@@ -59,32 +59,12 @@ module RocketIO
59
59
  end.freeze
60
60
  end
61
61
 
62
- # building a constant name for given engine name.
63
- # if a class given, return it as is.
64
- #
65
- # @example
66
- # engine_class(:Slim) #=> :SlimTemplate
67
- #
68
- # @param engine name
69
- # @return [Symbol, Class]
70
- #
71
- def engine_class engine
72
- return engine if engine.is_a?(Class)
73
- (RocketIO::ENGINE_CONST_FORMAT % engine).to_sym
74
- end
75
-
76
- def engine_const engine
77
- return engine if engine.is_a?(Class)
78
- ::Tilt.const_get(engine)
79
- end
80
-
81
62
  def error_renderer error_code, without_layout = nil, context = {}
82
63
  response = RocketIO::ERROR_TEMPLATES[error_code].render(context)
83
64
  return response if without_layout
84
65
  RocketIO::ERROR_TEMPLATES[:layout].render(context.merge(yield: response))
85
66
  end
86
67
 
87
-
88
68
  def caller_to_dirname caller
89
69
  ::File.dirname(caller[0].split(/:\d+:in\s+`/)[0])
90
70
  end
@@ -1,3 +1,3 @@
1
1
  module RocketIO
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.authors = ['Slee Woo']
8
8
  spec.email = ['mail@sleewoo.com']
9
9
  spec.summary = [spec.name, spec.version]*'-',
10
- spec.description = 'Simple, fast, scalable web framework for Ruby'
10
+ spec.description = 'Simple routing lib'
11
11
  spec.homepage = 'https://github.com/rocketio/' + spec.name
12
12
  spec.license = 'MIT'
13
13
 
@@ -16,12 +16,11 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.required_ruby_version = '~> 2.2'
18
18
 
19
- spec.add_runtime_dependency 'rack', '~> 1.5'
19
+ spec.add_runtime_dependency 'rack', '~> 2'
20
20
  spec.add_runtime_dependency 'mustache', '~> 1'
21
- spec.add_runtime_dependency 'tilt', '~> 2'
22
21
 
23
22
  spec.add_development_dependency 'bundler', '~> 1.7'
24
- spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rake', '~> 10.5'
25
24
  spec.add_development_dependency 'tokyo', '~> 0'
26
25
  spec.add_development_dependency 'rack-radar', '~> 0'
27
26
  spec.add_development_dependency 'pry', '~> 0'
@@ -13,13 +13,6 @@ spec :api do
13
13
  after {}
14
14
  use proc {}
15
15
  sessions :cookies
16
- engine :ERB
17
- layout :main
18
- define_layout(:main) {}
19
- define_layout(:file, file: :file)
20
- define_template(:main) {}
21
- define_template(:file, file: :file)
22
- define_template_var(:var) {}
23
16
  }
24
17
  assert(c.api).empty?
25
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Slee Woo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-25 00:00:00.000000000 Z
11
+ date: 2016-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mustache
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1'
41
- - !ruby/object:Gem::Dependency
42
- name: tilt
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '2'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '2'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: bundler
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +58,14 @@ dependencies:
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '10.0'
61
+ version: '10.5'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '10.0'
68
+ version: '10.5'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: tokyo
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +122,7 @@ dependencies:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
124
  version: '3'
139
- description: Simple, fast, scalable web framework for Ruby
125
+ description: Simple routing lib
140
126
  email:
141
127
  - mail@sleewoo.com
142
128
  executables: []
@@ -149,8 +135,6 @@ files:
149
135
  - Gemfile
150
136
  - README.md
151
137
  - Rakefile
152
- - bin/console
153
- - bin/setup
154
138
  - lib/rocketio.rb
155
139
  - lib/rocketio/application.rb
156
140
  - lib/rocketio/controller.rb
@@ -162,12 +146,6 @@ files:
162
146
  - lib/rocketio/controller/flash.rb
163
147
  - lib/rocketio/controller/helpers.rb
164
148
  - lib/rocketio/controller/middleware.rb
165
- - lib/rocketio/controller/render.rb
166
- - lib/rocketio/controller/render/engine.rb
167
- - lib/rocketio/controller/render/layout.rb
168
- - lib/rocketio/controller/render/layouts.rb
169
- - lib/rocketio/controller/render/template_vars.rb
170
- - lib/rocketio/controller/render/templates.rb
171
149
  - lib/rocketio/controller/request.rb
172
150
  - lib/rocketio/controller/response.rb
173
151
  - lib/rocketio/controller/sessions.rb
@@ -176,7 +154,6 @@ files:
176
154
  - lib/rocketio/error_templates/404.html
177
155
  - lib/rocketio/error_templates/501.html
178
156
  - lib/rocketio/error_templates/layout.html
179
- - lib/rocketio/exceptions.rb
180
157
  - lib/rocketio/router.rb
181
158
  - lib/rocketio/util.rb
182
159
  - lib/rocketio/version.rb
@@ -197,22 +174,6 @@ files:
197
174
  - test/keyword_arguments.rb
198
175
  - test/middleware_test.rb
199
176
  - test/redirect_test.rb
200
- - test/render/b.erb
201
- - test/render/c.erb
202
- - test/render/engine_test.rb
203
- - test/render/index.erb
204
- - test/render/items.erb
205
- - test/render/layout.erb
206
- - test/render/layout_test.rb
207
- - test/render/layouts/master.erb
208
- - test/render/layouts_test.rb
209
- - test/render/master.erb
210
- - test/render/render_test.rb
211
- - test/render/setup.rb
212
- - test/render/template_vars_test.rb
213
- - test/render/templates/a/get.erb
214
- - test/render/templates/master.erb
215
- - test/render/templates_test.rb
216
177
  - test/request_test.rb
217
178
  - test/response_test.rb
218
179
  - test/routes_test.rb
@@ -242,5 +203,5 @@ rubyforge_project:
242
203
  rubygems_version: 2.5.1
243
204
  signing_key:
244
205
  specification_version: 4
245
- summary: '["rocketio-0.3.0", "Simple, fast, scalable web framework for Ruby"]'
206
+ summary: '["rocketio-0.4.0", "Simple routing lib"]'
246
207
  test_files: []