rocketio 0.3.0 → 0.4.0

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 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: []