padrino-core 0.12.9 → 0.13.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +5 -13
  2. data/bin/padrino +1 -2
  3. data/lib/padrino-core/application/application_setup.rb +10 -6
  4. data/lib/padrino-core/application/params_protection.rb +7 -1
  5. data/lib/padrino-core/application/routing.rb +88 -50
  6. data/lib/padrino-core/application/show_exceptions.rb +29 -0
  7. data/lib/padrino-core/application.rb +0 -19
  8. data/lib/padrino-core/caller.rb +1 -2
  9. data/lib/padrino-core/cli/base.rb +7 -11
  10. data/lib/padrino-core/cli/rake_tasks.rb +8 -21
  11. data/lib/padrino-core/loader.rb +13 -12
  12. data/lib/padrino-core/logger.rb +4 -32
  13. data/lib/padrino-core/mounter.rb +62 -21
  14. data/lib/padrino-core/path_router/compiler.rb +110 -0
  15. data/lib/padrino-core/path_router/error_handler.rb +8 -0
  16. data/lib/padrino-core/path_router/matcher.rb +123 -0
  17. data/lib/padrino-core/path_router/route.rb +169 -0
  18. data/lib/padrino-core/path_router.rb +119 -0
  19. data/lib/padrino-core/reloader/rack.rb +1 -4
  20. data/lib/padrino-core/reloader/storage.rb +3 -31
  21. data/lib/padrino-core/reloader.rb +12 -17
  22. data/lib/padrino-core/version.rb +1 -1
  23. data/lib/padrino-core.rb +0 -2
  24. data/padrino-core.gemspec +8 -2
  25. data/test/fixtures/apps/helpers/support.rb +1 -0
  26. data/test/fixtures/apps/{rack_apps.rb → mountable_apps/rack_apps.rb} +0 -4
  27. data/test/fixtures/apps/{static.html → mountable_apps/static.html} +0 -0
  28. data/test/fixtures/apps/precompiled_app.rb +19 -0
  29. data/test/fixtures/apps/system.rb +0 -2
  30. data/test/helper.rb +1 -1
  31. data/test/test_application.rb +18 -6
  32. data/test/test_csrf_protection.rb +6 -7
  33. data/test/test_filters.rb +18 -1
  34. data/test/test_logger.rb +1 -49
  35. data/test/test_mounter.rb +2 -4
  36. data/test/test_params_protection.rb +15 -15
  37. data/test/test_reloader_simple.rb +2 -2
  38. data/test/test_reloader_system.rb +0 -30
  39. data/test/test_restful_routing.rb +4 -4
  40. data/test/test_routing.rb +176 -54
  41. metadata +109 -49
  42. data/lib/padrino-core/cli/binstub.rb +0 -27
  43. data/lib/padrino-core/configuration.rb +0 -40
  44. data/lib/padrino-core/ext/http_router.rb +0 -201
  45. data/lib/padrino-core/mounter/application_extension.rb +0 -55
  46. data/test/fixtures/apps/custom_dependencies/custom_dependencies.rb +0 -11
  47. data/test/fixtures/apps/custom_dependencies/my_dependencies/my_dependency.rb +0 -0
  48. data/test/fixtures/apps/stealthy/app.rb +0 -7
  49. data/test/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb +0 -13
  50. data/test/test_configuration.rb +0 -29
  51. data/test/test_reloader_storage.rb +0 -51
@@ -80,7 +80,7 @@ describe "SimpleReloader" do
80
80
  assert ok?
81
81
  last_body = body
82
82
  assert_equal 1, @app.filters[:before].size
83
- assert_equal 0, @app.errors.reject{ |key, _| [404, Sinatra::NotFound].include? key }.size
83
+ assert_equal 1, @app.errors.size
84
84
  assert_equal 2, @app.filters[:after].size # app + content-type + padrino-flash
85
85
  assert_equal 0, @app.middleware.size
86
86
  assert_equal 4, @app.routes.size # GET+HEAD of "/" + GET+HEAD of "/rand" = 4
@@ -90,7 +90,7 @@ describe "SimpleReloader" do
90
90
  get "/rand"
91
91
  refute_equal last_body, body
92
92
  assert_equal 1, @app.filters[:before].size
93
- assert_equal 0, @app.errors.reject{ |key, _| [404, Sinatra::NotFound].include? key }.size
93
+ assert_equal 1, @app.errors.size
94
94
  assert_equal 2, @app.filters[:after].size
95
95
  assert_equal 0, @app.middleware.size
96
96
  assert_equal 4, @app.routes.size # GET+HEAD of "/" = 2
@@ -2,7 +2,6 @@ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
2
  require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/kiq')
3
3
  require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/system')
4
4
  require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/static')
5
- require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/custom_dependencies/custom_dependencies')
6
5
 
7
6
  describe "SystemReloader" do
8
7
  describe 'for wierd and difficult reload events' do
@@ -110,34 +109,5 @@ describe "SystemReloader" do
110
109
  FileUtils.rm tmp_file
111
110
  end
112
111
  end
113
-
114
- it 'should not fail with superclass mismatch when reloading descendant classes with no instances' do
115
- Padrino.clear!
116
- require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/stealthy/app.rb')
117
- @app = SystemStealthyClassDemo
118
- Padrino.mount(SystemStealthyClassDemo).to("/")
119
- get '/'
120
- FileUtils.touch File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb')
121
- Padrino.reload!
122
- end
123
- end
124
-
125
- describe 'reloading custom dependencies' do
126
- let(:custom_dependency_path) { File.dirname(__FILE__) + '/fixtures/apps/custom_dependencies/my_dependencies' }
127
- let(:custom_dependency) { File.join(custom_dependency_path, 'my_dependency.rb') }
128
-
129
- before do
130
- @app = CustomDependencies
131
- Padrino.clear!
132
- Padrino.mount(CustomDependencies).to("/")
133
- Padrino.dependency_paths << custom_dependency_path + '/*.rb'
134
- Padrino.load!
135
- get '/'
136
- end
137
-
138
- it 'should discover changed dependencies' do
139
- FileUtils.touch(custom_dependency)
140
- assert Padrino::Reloader.changed?, 'Change to custom dependency has not been recognised'
141
- end
142
112
  end
143
113
  end
@@ -4,8 +4,8 @@ describe "Routing" do
4
4
  it 'should perform restul routing' do
5
5
  mock_app do
6
6
  controller :parent => :parents do
7
- get :index do
8
- "#{url_for(:index, params[:parent_id])} get"
7
+ get :index, :with => :asset_id do
8
+ "#{url_for(:index, params[:parent_id], :asset_id => params[:asset_id])} get"
9
9
  end
10
10
 
11
11
  put :index, :with => :asset_id do
@@ -21,8 +21,8 @@ describe "Routing" do
21
21
  end
22
22
  end
23
23
  end
24
- get "/parents/1"
25
- assert_equal "/parents/1 get", body
24
+ get "/parents/1/hi"
25
+ assert_equal "/parents/1/hi get", body
26
26
  put "/parents/1/hi"
27
27
  assert_equal "/parents/1/hi put", body
28
28
  post "/parents/1/hi"
data/test/test_routing.rb CHANGED
@@ -3,6 +3,30 @@ require File.expand_path(File.dirname(__FILE__) + '/helper')
3
3
 
4
4
  class FooError < RuntimeError; end
5
5
 
6
+ class RegexpLookAlike
7
+ # RegexpLookAlike#to_s, RegexpLookAlike#names and MatchData#names must be defined.
8
+ class MatchData
9
+ def captures
10
+ ["this", "is", "a", "test"]
11
+ end
12
+
13
+ def names
14
+ ["one", "two", "three", "four"]
15
+ end
16
+ end
17
+
18
+ def names
19
+ ["one", "two", "three", "four"]
20
+ end
21
+
22
+ def to_s
23
+ "/this/is/a/test/"
24
+ end
25
+
26
+ def match(string)
27
+ ::RegexpLookAlike::MatchData.new if string == "/this/is/a/test/"
28
+ end
29
+ end
6
30
 
7
31
  describe "Routing" do
8
32
  before do
@@ -234,6 +258,7 @@ describe "Routing" do
234
258
  get(:hash, :with => :id){ url(:hash, :id => 1) }
235
259
  get(:anchor) { url(:anchor, :anchor => 'comments') }
236
260
  get(:fragment) { url(:anchor, :fragment => 'comments') }
261
+ get(:fragment2) { url(:anchor, :fragment => :comments) }
237
262
  get([:hash, :id]){ url(:hash, :id => 1) }
238
263
  get(:array, :with => :id){ url(:array, 23) }
239
264
  get([:array, :id]){ url(:array, 23) }
@@ -248,6 +273,7 @@ describe "Routing" do
248
273
  post(:foo, '', :with => :id){ |id| "/#{id}" }
249
274
  delete(:drugs, :with => [:id, 'destroy']){ |id| "/drugs/#{id}/destroy" }
250
275
  delete(:drugs, '', :with => [:id, 'destroy']){ |id| "/#{id}/destroy" }
276
+ get(:splatter, "/splatter/*/*"){ |a, b| url(:splatter, :splat => ["123", "456"]) }
251
277
  end
252
278
  get "/foo"
253
279
  assert_equal "/foo", body
@@ -259,6 +285,8 @@ describe "Routing" do
259
285
  assert_equal "/anchor#comments", body
260
286
  get "/fragment"
261
287
  assert_equal "/anchor#comments", body
288
+ get "/fragment2"
289
+ assert_equal "/anchor#comments", body
262
290
  get "/array/23"
263
291
  assert_equal "/array/23", body
264
292
  get "/hash_with_extra/1"
@@ -279,6 +307,8 @@ describe "Routing" do
279
307
  assert_equal "/drugs/123/destroy", body
280
308
  delete "/123/destroy"
281
309
  assert_equal "/123/destroy", body
310
+ get "/splatter/123/456"
311
+ assert_equal "/splatter/123/456", body
282
312
  end
283
313
 
284
314
  it 'should generate url with format' do
@@ -406,16 +436,6 @@ describe "Routing" do
406
436
  assert_equal 406, status
407
437
  end
408
438
 
409
- it 'should provide proper content when :provides is specified and Accept: `*/*` requested' do
410
- mock_app do
411
- get(:text, :provides => :text) { "text" }
412
- end
413
- header 'Accept', '*/*'
414
- get "/text"
415
- assert_equal 200, status
416
- assert_equal "text", body
417
- end
418
-
419
439
  it 'should return 404 on file extensions it does not provide and flag is not set' do
420
440
  mock_app do
421
441
  get(:a, :provides => [:html, :js]){ content_type }
@@ -461,7 +481,6 @@ describe "Routing" do
461
481
  end
462
482
 
463
483
  it 'should allow "." in param values' do
464
- skip # TODO fix this?
465
484
  mock_app do
466
485
  get('/id/:email', :provides => [:json]) { |email, format| [email, format] * '/' }
467
486
  end
@@ -533,14 +552,14 @@ describe "Routing" do
533
552
  it 'should inject the action name into the request' do
534
553
  mock_app do
535
554
  controller :posts do
536
- get('/omnomnom(/:id)') { request.action.inspect }
555
+ get('/omnomnom(/:id)?') { request.action.inspect }
537
556
  controller :mini do
538
557
  get([:a, :b, :c]) { request.action.inspect }
539
558
  end
540
559
  end
541
560
  end
542
561
  get "/posts/omnomnom"
543
- assert_equal "\"/omnomnom(/:id)\"", body
562
+ assert_equal "\"/omnomnom(/:id)?\"", body
544
563
  get "/mini/a/b/c"
545
564
  assert_equal ":a", body
546
565
  end
@@ -737,27 +756,12 @@ describe "Routing" do
737
756
  assert_equal 'application/json', response["Content-Type"]
738
757
  get "/a.foo"
739
758
  assert_equal "foo", body
740
- assert_equal 'application/foo', response["Content-Type"]
759
+ assert_equal 'application/foo;charset=utf-8', response["Content-Type"]
741
760
  get "/a"
742
761
  assert_equal "html", body
743
762
  assert_equal 'text/html;charset=utf-8', response["Content-Type"]
744
763
  end
745
764
 
746
- it 'should not drop json charset' do
747
- mock_app do
748
- get '/' do
749
- content_type :json, :charset => 'utf-16'
750
- end
751
- get '/a' do
752
- content_type :json, 'charset' => 'utf-16'
753
- end
754
- end
755
- get '/'
756
- assert_equal 'application/json;charset=utf-16', response["Content-Type"]
757
- get '/a'
758
- assert_equal 'application/json;charset=utf-16', response["Content-Type"]
759
- end
760
-
761
765
  it 'should use controllers' do
762
766
  mock_app do
763
767
  controller "/admin" do
@@ -996,7 +1000,7 @@ describe "Routing" do
996
1000
 
997
1001
  it 'should allow optionals' do
998
1002
  mock_app do
999
- get(:show, :map => "/stories/:type(/:category)") do
1003
+ get(:show, :map => "/stories/:type(/:category)?") do
1000
1004
  "#{params[:type]}/#{params[:category]}"
1001
1005
  end
1002
1006
  end
@@ -1544,7 +1548,7 @@ describe "Routing" do
1544
1548
 
1545
1549
  it 'should works with optionals params' do
1546
1550
  mock_app do
1547
- get("/foo(/:bar)") { params[:bar] }
1551
+ get("/foo(/:bar)?") { params[:bar] }
1548
1552
  end
1549
1553
 
1550
1554
  get "/foo/bar"
@@ -1692,7 +1696,7 @@ describe "Routing" do
1692
1696
 
1693
1697
  it 'should use optionals params' do
1694
1698
  mock_app do
1695
- get(:index, :map => "/(:foo(/:bar))") { "#{params[:foo]}-#{params[:bar]}" }
1699
+ get(:index, :map => "/:foo(/:bar)?") { "#{params[:foo]}-#{params[:bar]}" }
1696
1700
  end
1697
1701
  get "/foo"
1698
1702
  assert_equal "foo-", body
@@ -2048,7 +2052,7 @@ describe "Routing" do
2048
2052
  mock_app do
2049
2053
  get(:index) { "%s %s" % [params[:account][:name], params[:account][:surname]] }
2050
2054
  end
2051
- get "/?" + Padrino::Utils.build_uri_query(:account => { :name => 'foo', :surname => 'bar' })
2055
+ get "/?" + { :account => { :name => 'foo', :surname => 'bar' } }.to_query
2052
2056
  assert_equal 'foo bar', body
2053
2057
  get @app.url(:index, "account[name]" => "foo", "account[surname]" => "bar")
2054
2058
  assert_equal 'foo bar', body
@@ -2106,14 +2110,14 @@ describe "Routing" do
2106
2110
  get(:simple, :map => "/simple/:id") { }
2107
2111
  get(:with_format, :with => :id, :provides => :js) { }
2108
2112
  end
2109
- assert_equal [:"foo bar", { :id => "fantastic" }], @app.recognize_path(@app.url(:foo, :bar, :id => :fantastic))
2110
- assert_equal [:"foo bar", { :id => "18" }], @app.recognize_path(@app.url(:foo, :bar, :id => 18))
2111
- assert_equal [:simple, { :id => "bar" }], @app.recognize_path(@app.url(:simple, :id => "bar"))
2112
- assert_equal [:simple, { :id => "true" }], @app.recognize_path(@app.url(:simple, :id => true))
2113
- assert_equal [:simple, { :id => "9" }], @app.recognize_path(@app.url(:simple, :id => 9))
2114
- assert_equal [:with_format, { :id => "bar", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => "bar", :format => :js))
2115
- assert_equal [:with_format, { :id => "true", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => true, :format => "js"))
2116
- assert_equal [:with_format, { :id => "9", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => 9, :format => :js))
2113
+ assert_equal [:"foo bar", { :id => "fantastic" }.with_indifferent_access], @app.recognize_path(@app.url(:foo, :bar, :id => :fantastic))
2114
+ assert_equal [:"foo bar", { :id => "18" }.with_indifferent_access], @app.recognize_path(@app.url(:foo, :bar, :id => 18))
2115
+ assert_equal [:simple, { :id => "bar" }.with_indifferent_access], @app.recognize_path(@app.url(:simple, :id => "bar"))
2116
+ assert_equal [:simple, { :id => "true" }.with_indifferent_access], @app.recognize_path(@app.url(:simple, :id => true))
2117
+ assert_equal [:simple, { :id => "9" }.with_indifferent_access], @app.recognize_path(@app.url(:simple, :id => 9))
2118
+ assert_equal [:with_format, { :id => "bar", :format => "js" }.with_indifferent_access], @app.recognize_path(@app.url(:with_format, :id => "bar", :format => :js))
2119
+ assert_equal [:with_format, { :id => "true", :format => "js" }.with_indifferent_access], @app.recognize_path(@app.url(:with_format, :id => true, :format => "js"))
2120
+ assert_equal [:with_format, { :id => "9", :format => "js" }.with_indifferent_access], @app.recognize_path(@app.url(:with_format, :id => 9, :format => :js))
2117
2121
  end
2118
2122
 
2119
2123
  it 'should have current_path' do
@@ -2165,15 +2169,25 @@ describe "Routing" do
2165
2169
  end
2166
2170
 
2167
2171
  it "should support splat params" do
2168
- # This test will be fixed with the new router
2169
- skip
2170
2172
  mock_app do
2171
2173
  get "/say/*/to/*" do
2172
2174
  params[:splat].inspect
2173
2175
  end
2174
2176
  end
2175
2177
  get "/say/hello/to/world"
2176
- assert_equal ["hello", "world"], body
2178
+ assert_equal %Q[["hello", "world"]], body
2179
+ end
2180
+
2181
+ it "should recognize the route containing splat params if path is ended with slash" do
2182
+ mock_app do
2183
+ get "/splat/*" do
2184
+ "slash!"
2185
+ end
2186
+ end
2187
+ get "/splat"
2188
+ assert_equal 404, status
2189
+ get "/splat/"
2190
+ assert_equal "slash!", body
2177
2191
  end
2178
2192
 
2179
2193
  it "should match correctly paths even if the free regex route exists" do
@@ -2190,17 +2204,125 @@ describe "Routing" do
2190
2204
  assert_equal '{"b"=>"x", "c"=>"y"}', body
2191
2205
  end
2192
2206
 
2193
- it 'should generate urls and absolute urls' do
2207
+ it "should support named captures like %r{/hello/(?<person>[^/?#]+)} on Ruby >= 1.9" do
2208
+ next if RUBY_VERSION < '1.9'
2194
2209
  mock_app do
2195
- get(:index) { settings.url(:index) }
2196
- get(:absolute) { settings.absolute_url(:absolute) }
2210
+ get Regexp.new('/hello/(?<person>[^/?#]+)') do
2211
+ "Hello #{params['person']}"
2212
+ end
2197
2213
  end
2198
- get '/'
2199
- assert_equal '/', body
2200
- get '/absolute'
2201
- assert_equal 'http://localhost/absolute', body
2202
- @app.set :base_url, 'http://example.com'
2203
- get '/absolute'
2204
- assert_equal 'http://example.com/absolute', body
2214
+ get '/hello/Frank'
2215
+ assert_equal 'Hello Frank', body
2216
+ end
2217
+
2218
+ it 'supports regular expression look-alike routes' do
2219
+ mock_app do
2220
+ get(RegexpLookAlike.new) do
2221
+ [params[:one], params[:two], params[:three], params[:four]].join(" ")
2222
+ end
2223
+ end
2224
+
2225
+ get '/this/is/a/test/'
2226
+ assert ok?
2227
+ assert_equal 'this is a test', body
2228
+ end
2229
+
2230
+ it "uses optional block passed to pass as route block if no other route is found" do
2231
+ mock_app do
2232
+ get "/" do
2233
+ pass do
2234
+ "this"
2235
+ end
2236
+ "not this"
2237
+ end
2238
+ end
2239
+
2240
+ get "/"
2241
+ assert ok?
2242
+ assert_equal "this", body
2243
+ end
2244
+
2245
+ it "supports mixing multiple splat params like /*/foo/*/* as block parameters" do
2246
+ mock_app do
2247
+ get '/*/foo/*/*' do |foo, bar, baz|
2248
+ "#{foo}, #{bar}, #{baz}"
2249
+ end
2250
+ end
2251
+
2252
+ get '/bar/foo/bling/baz/boom'
2253
+ assert ok?
2254
+ assert_equal 'bar, bling, baz/boom', body
2255
+ end
2256
+
2257
+ it "should be able to use PathRouter#recognize to recognize routes" do
2258
+ mock_app do
2259
+ get(:sample){}
2260
+ end
2261
+ env = Rack::MockRequest.env_for("/sample")
2262
+ request = Rack::Request.new(env)
2263
+ assert_equal :sample, @app.router.recognize(request).first.name
2264
+ end
2265
+
2266
+ it "should be able to use PathRouter#recognize to recognize routes by using Rack::MockRequest" do
2267
+ mock_app do
2268
+ get(:mock_sample){}
2269
+ end
2270
+ env = Rack::MockRequest.env_for("/mock_sample")
2271
+ assert_equal :mock_sample, @app.router.recognize(env).first.name
2272
+ env = Rack::MockRequest.env_for("/invalid")
2273
+ assert_equal [], @app.router.recognize(env)
2274
+ end
2275
+
2276
+ it "should be able to use params after sending request" do
2277
+ last_app = mock_app do
2278
+ get("/foo/:id"){ params.inspect }
2279
+ end
2280
+ get "/foo/123"
2281
+ assert_equal({"id"=>"123"}, Thread.current['padrino.instance'].instance_variable_get(:@params))
2282
+ end
2283
+
2284
+ it "should raise an exception if block arity is not same with captured params size" do
2285
+ assert_raises(Padrino::Routing::BlockArityError) do
2286
+ mock_app do
2287
+ get("/sample/:a/:b") { |a| }
2288
+ end
2289
+ end
2290
+ end
2291
+
2292
+ it "should pass format value as a block parameter" do
2293
+ mock_app do
2294
+ get "/sample/:a/:b", :provides => :xml do |a, b, format|
2295
+ "#{a}, #{b}, #{format}"
2296
+ end
2297
+ end
2298
+ get "/sample/foo/bar"
2299
+ assert_equal "foo, bar, ", body
2300
+ get "/sample/foo/bar.xml"
2301
+ assert_equal "foo, bar, xml", body
2302
+ end
2303
+
2304
+ it "should allow negative arity in route block" do
2305
+ mock_app do
2306
+ get("/:a/sample/*/*") { |*all| }
2307
+ end
2308
+ end
2309
+
2310
+ it "should be able to use splat and named captues" do
2311
+ mock_app do
2312
+ get("/:a/:b/*/*/*") { |a, b, *splats| "#{a}, #{b}, (#{splats * ","})" }
2313
+ end
2314
+ get "/123/456/a/b/c"
2315
+ assert_equal "123, 456, (a,b,c)", body
2316
+ end
2317
+
2318
+ it "can modify the request" do
2319
+ mock_app do
2320
+ get('/foo') { request.path_info = '/bar'; pass }
2321
+ get('/bar') { 'bar' }
2322
+ end
2323
+
2324
+ get '/foo'
2325
+ assert ok?
2326
+ assert_equal 'bar', body
2205
2327
  end
2206
2328
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.9
4
+ version: 0.13.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Padrino Team
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-02-23 00:00:00.000000000 Z
14
+ date: 2015-02-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: padrino-support
@@ -19,94 +19,98 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.12.9
22
+ version: 0.13.0.beta1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.12.9
29
+ version: 0.13.0.beta1
30
30
  - !ruby/object:Gem::Dependency
31
- name: sinatra
31
+ name: rack
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - ! '>='
34
+ - - <
35
35
  - !ruby/object:Gem::Version
36
- version: !binary |-
37
- MS40LjY=
36
+ version: 1.6.0
38
37
  type: :runtime
39
38
  prerelease: false
40
39
  version_requirements: !ruby/object:Gem::Requirement
41
40
  requirements:
42
- - - ! '>='
41
+ - - <
43
42
  - !ruby/object:Gem::Version
44
- version: !binary |-
45
- MS40LjY=
43
+ version: 1.6.0
46
44
  - !ruby/object:Gem::Dependency
47
- name: http_router
45
+ name: sinatra
48
46
  requirement: !ruby/object:Gem::Requirement
49
47
  requirements:
50
48
  - - ~>
51
49
  - !ruby/object:Gem::Version
52
- version: !binary |-
53
- MC4xMS4w
50
+ version: 1.4.2
54
51
  type: :runtime
55
52
  prerelease: false
56
53
  version_requirements: !ruby/object:Gem::Requirement
57
54
  requirements:
58
55
  - - ~>
59
56
  - !ruby/object:Gem::Version
60
- version: !binary |-
61
- MC4xMS4w
57
+ version: 1.4.2
58
+ - !ruby/object:Gem::Dependency
59
+ name: mustermann19
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
62
72
  - !ruby/object:Gem::Dependency
63
73
  name: thor
64
74
  requirement: !ruby/object:Gem::Requirement
65
75
  requirements:
66
76
  - - ~>
67
77
  - !ruby/object:Gem::Version
68
- version: !binary |-
69
- MC4xOA==
78
+ version: '0.18'
70
79
  type: :runtime
71
80
  prerelease: false
72
81
  version_requirements: !ruby/object:Gem::Requirement
73
82
  requirements:
74
83
  - - ~>
75
84
  - !ruby/object:Gem::Version
76
- version: !binary |-
77
- MC4xOA==
85
+ version: '0.18'
78
86
  - !ruby/object:Gem::Dependency
79
87
  name: activesupport
80
88
  requirement: !ruby/object:Gem::Requirement
81
89
  requirements:
82
- - - ! '>='
90
+ - - '>='
83
91
  - !ruby/object:Gem::Version
84
- version: !binary |-
85
- My4x
92
+ version: '3.1'
86
93
  type: :runtime
87
94
  prerelease: false
88
95
  version_requirements: !ruby/object:Gem::Requirement
89
96
  requirements:
90
- - - ! '>='
97
+ - - '>='
91
98
  - !ruby/object:Gem::Version
92
- version: !binary |-
93
- My4x
99
+ version: '3.1'
94
100
  - !ruby/object:Gem::Dependency
95
101
  name: rack-protection
96
102
  requirement: !ruby/object:Gem::Requirement
97
103
  requirements:
98
- - - ! '>='
104
+ - - '>='
99
105
  - !ruby/object:Gem::Version
100
- version: !binary |-
101
- MS41LjA=
106
+ version: 1.5.0
102
107
  type: :runtime
103
108
  prerelease: false
104
109
  version_requirements: !ruby/object:Gem::Requirement
105
110
  requirements:
106
- - - ! '>='
111
+ - - '>='
107
112
  - !ruby/object:Gem::Version
108
- version: !binary |-
109
- MS41LjA=
113
+ version: 1.5.0
110
114
  description: The Padrino core gem required for use of this framework
111
115
  email: padrinorb@gmail.com
112
116
  executables:
@@ -133,14 +137,11 @@ files:
133
137
  - lib/padrino-core/caller.rb
134
138
  - lib/padrino-core/cli/adapter.rb
135
139
  - lib/padrino-core/cli/base.rb
136
- - lib/padrino-core/cli/binstub.rb
137
140
  - lib/padrino-core/cli/console.rb
138
141
  - lib/padrino-core/cli/launcher.rb
139
142
  - lib/padrino-core/cli/rake.rb
140
143
  - lib/padrino-core/cli/rake_tasks.rb
141
144
  - lib/padrino-core/command.rb
142
- - lib/padrino-core/configuration.rb
143
- - lib/padrino-core/ext/http_router.rb
144
145
  - lib/padrino-core/ext/sinatra.rb
145
146
  - lib/padrino-core/filter.rb
146
147
  - lib/padrino-core/images/404.png
@@ -149,7 +150,11 @@ files:
149
150
  - lib/padrino-core/logger.rb
150
151
  - lib/padrino-core/module.rb
151
152
  - lib/padrino-core/mounter.rb
152
- - lib/padrino-core/mounter/application_extension.rb
153
+ - lib/padrino-core/path_router.rb
154
+ - lib/padrino-core/path_router/compiler.rb
155
+ - lib/padrino-core/path_router/error_handler.rb
156
+ - lib/padrino-core/path_router/matcher.rb
157
+ - lib/padrino-core/path_router/route.rb
153
158
  - lib/padrino-core/reloader.rb
154
159
  - lib/padrino-core/reloader/rack.rb
155
160
  - lib/padrino-core/reloader/storage.rb
@@ -164,8 +169,6 @@ files:
164
169
  - test/fixtures/app_gem/lib/app_gem.rb
165
170
  - test/fixtures/app_gem/lib/app_gem/version.rb
166
171
  - test/fixtures/apps/complex.rb
167
- - test/fixtures/apps/custom_dependencies/custom_dependencies.rb
168
- - test/fixtures/apps/custom_dependencies/my_dependencies/my_dependency.rb
169
172
  - test/fixtures/apps/demo_app.rb
170
173
  - test/fixtures/apps/demo_demo.rb
171
174
  - test/fixtures/apps/demo_project/api/app.rb
@@ -175,18 +178,18 @@ files:
175
178
  - test/fixtures/apps/external_apps/fake_root.rb
176
179
  - test/fixtures/apps/helpers/class_methods_helpers.rb
177
180
  - test/fixtures/apps/helpers/instance_methods_helpers.rb
181
+ - test/fixtures/apps/helpers/support.rb
178
182
  - test/fixtures/apps/helpers/system_helpers.rb
179
183
  - test/fixtures/apps/kiq.rb
180
184
  - test/fixtures/apps/lib/myklass.rb
181
185
  - test/fixtures/apps/lib/myklass/mysubklass.rb
182
186
  - test/fixtures/apps/models/child.rb
183
187
  - test/fixtures/apps/models/parent.rb
184
- - test/fixtures/apps/rack_apps.rb
188
+ - test/fixtures/apps/mountable_apps/rack_apps.rb
189
+ - test/fixtures/apps/mountable_apps/static.html
190
+ - test/fixtures/apps/precompiled_app.rb
185
191
  - test/fixtures/apps/simple.rb
186
- - test/fixtures/apps/static.html
187
192
  - test/fixtures/apps/static.rb
188
- - test/fixtures/apps/stealthy/app.rb
189
- - test/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb
190
193
  - test/fixtures/apps/system.rb
191
194
  - test/fixtures/apps/system_class_methods_demo.rb
192
195
  - test/fixtures/apps/system_instance_methods_demo.rb
@@ -202,7 +205,6 @@ files:
202
205
  - test/fixtures/reloadable_apps/main/app.rb
203
206
  - test/helper.rb
204
207
  - test/test_application.rb
205
- - test/test_configuration.rb
206
208
  - test/test_core.rb
207
209
  - test/test_csrf_protection.rb
208
210
  - test/test_dependencies.rb
@@ -215,7 +217,6 @@ files:
215
217
  - test/test_reloader_complex.rb
216
218
  - test/test_reloader_external.rb
217
219
  - test/test_reloader_simple.rb
218
- - test/test_reloader_storage.rb
219
220
  - test/test_reloader_system.rb
220
221
  - test/test_restful_routing.rb
221
222
  - test/test_router.rb
@@ -231,18 +232,77 @@ require_paths:
231
232
  - lib
232
233
  required_ruby_version: !ruby/object:Gem::Requirement
233
234
  requirements:
234
- - - ! '>='
235
+ - - '>='
235
236
  - !ruby/object:Gem::Version
236
237
  version: '0'
237
238
  required_rubygems_version: !ruby/object:Gem::Requirement
238
239
  requirements:
239
- - - ! '>='
240
+ - - '>'
240
241
  - !ruby/object:Gem::Version
241
- version: 1.3.6
242
+ version: 1.3.1
242
243
  requirements: []
243
244
  rubyforge_project: padrino-core
244
- rubygems_version: 2.6.14
245
+ rubygems_version: 2.0.6
245
246
  signing_key:
246
247
  specification_version: 4
247
248
  summary: The required Padrino core gem
248
- test_files: []
249
+ test_files:
250
+ - test/fixtures/app_gem/Gemfile
251
+ - test/fixtures/app_gem/app/app.rb
252
+ - test/fixtures/app_gem/app_gem.gemspec
253
+ - test/fixtures/app_gem/lib/app_gem.rb
254
+ - test/fixtures/app_gem/lib/app_gem/version.rb
255
+ - test/fixtures/apps/complex.rb
256
+ - test/fixtures/apps/demo_app.rb
257
+ - test/fixtures/apps/demo_demo.rb
258
+ - test/fixtures/apps/demo_project/api/app.rb
259
+ - test/fixtures/apps/demo_project/api/lib/api_lib.rb
260
+ - test/fixtures/apps/demo_project/app.rb
261
+ - test/fixtures/apps/external_apps/fake_lib.rb
262
+ - test/fixtures/apps/external_apps/fake_root.rb
263
+ - test/fixtures/apps/helpers/class_methods_helpers.rb
264
+ - test/fixtures/apps/helpers/instance_methods_helpers.rb
265
+ - test/fixtures/apps/helpers/support.rb
266
+ - test/fixtures/apps/helpers/system_helpers.rb
267
+ - test/fixtures/apps/kiq.rb
268
+ - test/fixtures/apps/lib/myklass.rb
269
+ - test/fixtures/apps/lib/myklass/mysubklass.rb
270
+ - test/fixtures/apps/models/child.rb
271
+ - test/fixtures/apps/models/parent.rb
272
+ - test/fixtures/apps/mountable_apps/rack_apps.rb
273
+ - test/fixtures/apps/mountable_apps/static.html
274
+ - test/fixtures/apps/precompiled_app.rb
275
+ - test/fixtures/apps/simple.rb
276
+ - test/fixtures/apps/static.rb
277
+ - test/fixtures/apps/system.rb
278
+ - test/fixtures/apps/system_class_methods_demo.rb
279
+ - test/fixtures/apps/system_instance_methods_demo.rb
280
+ - test/fixtures/dependencies/a.rb
281
+ - test/fixtures/dependencies/b.rb
282
+ - test/fixtures/dependencies/c.rb
283
+ - test/fixtures/dependencies/circular/e.rb
284
+ - test/fixtures/dependencies/circular/f.rb
285
+ - test/fixtures/dependencies/circular/g.rb
286
+ - test/fixtures/dependencies/d.rb
287
+ - test/fixtures/reloadable_apps/external/app/app.rb
288
+ - test/fixtures/reloadable_apps/external/app/controllers/base.rb
289
+ - test/fixtures/reloadable_apps/main/app.rb
290
+ - test/helper.rb
291
+ - test/test_application.rb
292
+ - test/test_core.rb
293
+ - test/test_csrf_protection.rb
294
+ - test/test_dependencies.rb
295
+ - test/test_filters.rb
296
+ - test/test_flash.rb
297
+ - test/test_locale.rb
298
+ - test/test_logger.rb
299
+ - test/test_mounter.rb
300
+ - test/test_params_protection.rb
301
+ - test/test_reloader_complex.rb
302
+ - test/test_reloader_external.rb
303
+ - test/test_reloader_simple.rb
304
+ - test/test_reloader_system.rb
305
+ - test/test_restful_routing.rb
306
+ - test/test_router.rb
307
+ - test/test_routing.rb
308
+ has_rdoc: