padrino-core 0.13.0.beta2 → 0.13.0.beta3
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 +4 -4
- data/lib/padrino-core/application/application_setup.rb +1 -0
- data/lib/padrino-core/application/routing.rb +12 -4
- data/lib/padrino-core/logger.rb +1 -0
- data/lib/padrino-core/path_router/compiler.rb +1 -1
- data/lib/padrino-core/reloader.rb +11 -9
- data/lib/padrino-core/version.rb +1 -1
- data/test/fixtures/apps/stealthy/app.rb +7 -0
- data/test/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb +13 -0
- data/test/test_logger.rb +10 -1
- data/test/test_reloader_system.rb +10 -0
- data/test/test_routing.rb +49 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ada2a90b4ae422b001c76fd0c1975cdc8eb83fb0
|
4
|
+
data.tar.gz: f02e786a62c645f53a0c099954a80e21c3123793
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6e7e61f93b09177a0347b1eff272a91cdacb9d3a55f1b5e65bb9902bcc4c4f6a0fd335f6be3c3b683e8fa2a0c2164bad2dcdfe7e3705b955dd5bd428d12e7d6
|
7
|
+
data.tar.gz: ea1d049f1f85e47f84c8b197af9c5e75d0bb21fbca7b867af1ed0c874c84a864cff2ab9952b2aa93203c8f3b8fcb4e5033a16093b8dab875c56febeb1e59c718
|
@@ -344,6 +344,14 @@ module Padrino
|
|
344
344
|
end
|
345
345
|
alias :url_for :url
|
346
346
|
|
347
|
+
##
|
348
|
+
# Returns absolute url. By default adds 'http://localhost' before generated url.
|
349
|
+
# To change that `set :base_url, 'http://example.com'` in your app.
|
350
|
+
#
|
351
|
+
def absolute_url(*args)
|
352
|
+
base_url + url(*args)
|
353
|
+
end
|
354
|
+
|
347
355
|
def get(path, *args, &block)
|
348
356
|
conditions = @conditions.dup
|
349
357
|
route('GET', path, *args, &block)
|
@@ -725,8 +733,7 @@ module Padrino
|
|
725
733
|
if types.include?(accept_format)
|
726
734
|
content_type(accept_format || :html, :charset => 'utf-8')
|
727
735
|
else
|
728
|
-
|
729
|
-
false
|
736
|
+
catch_all ? true : halt(406)
|
730
737
|
end
|
731
738
|
end
|
732
739
|
end
|
@@ -972,8 +979,9 @@ module Padrino
|
|
972
979
|
@route = request.route_obj = route
|
973
980
|
captured_params = captures_from_params(params)
|
974
981
|
|
975
|
-
@params.merge!(params)
|
976
|
-
@params
|
982
|
+
@params.merge!(params) { |key, original, newval| original } unless params.empty?
|
983
|
+
@params[:format] = params[:format] if params[:format]
|
984
|
+
@params[:captures] = captured_params if !captured_params.empty? && route.path.is_a?(Regexp)
|
977
985
|
|
978
986
|
filter! :before if first_time
|
979
987
|
|
data/lib/padrino-core/logger.rb
CHANGED
@@ -73,7 +73,7 @@ module Padrino
|
|
73
73
|
#
|
74
74
|
def match?(offset, path)
|
75
75
|
current_regexp = @regexps[offset]
|
76
|
-
return unless current_regexp === path || current_regexp === path[0..-2]
|
76
|
+
return unless current_regexp === path || (path.end_with?("/") && current_regexp === path[0..-2])
|
77
77
|
@routes[offset..-1].detect{ |route| Regexp.last_match["_#{route.index}"] }
|
78
78
|
end
|
79
79
|
|
@@ -251,18 +251,13 @@ module Padrino
|
|
251
251
|
#
|
252
252
|
def external_constant?(const)
|
253
253
|
sources = object_sources(const)
|
254
|
-
|
255
|
-
|
256
|
-
sources += object_sources(sample)
|
257
|
-
end
|
258
|
-
rescue RuntimeError => error # JRuby 1.7.12 fails to ObjectSpace.each_object
|
259
|
-
raise unless RUBY_PLATFORM =='java' && error.message.start_with?("ObjectSpace is disabled")
|
260
|
-
end
|
254
|
+
# consider methodless constants not external
|
255
|
+
return false if sources.empty?
|
261
256
|
!sources.any?{ |source| source.start_with?(Padrino.root) }
|
262
257
|
end
|
263
258
|
|
264
259
|
##
|
265
|
-
# Gets all the sources in which target
|
260
|
+
# Gets all the sources in which target class is defined.
|
266
261
|
#
|
267
262
|
# Note: Method#source_location is for Ruby 1.9.3+ only.
|
268
263
|
#
|
@@ -271,7 +266,14 @@ module Padrino
|
|
271
266
|
target.methods.each do |method_name|
|
272
267
|
next unless method_name.kind_of?(Symbol)
|
273
268
|
method_object = target.method(method_name)
|
274
|
-
if method_object.owner ==
|
269
|
+
if method_object.owner == target.singleton_class
|
270
|
+
sources << method_object.source_location.first
|
271
|
+
end
|
272
|
+
end
|
273
|
+
target.instance_methods.each do |method_name|
|
274
|
+
next unless method_name.kind_of?(Symbol)
|
275
|
+
method_object = target.instance_method(method_name)
|
276
|
+
if method_object.owner == target
|
275
277
|
sources << method_object.source_location.first
|
276
278
|
end
|
277
279
|
end
|
data/lib/padrino-core/version.rb
CHANGED
data/test/test_logger.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#coding:utf-8
|
1
2
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
3
|
require 'logger'
|
3
4
|
|
@@ -58,6 +59,14 @@ describe "PadrinoLogger" do
|
|
58
59
|
assert_match /log via alias/, @log.string
|
59
60
|
end
|
60
61
|
|
62
|
+
it 'should not blow up on mixed or broken encoodings' do
|
63
|
+
skip
|
64
|
+
setup_logger(:log_level => :error, :auto_flush => false)
|
65
|
+
@logger.error "\xD0".force_encoding('BINARY')
|
66
|
+
@logger << 'фыв'
|
67
|
+
@logger.flush
|
68
|
+
end
|
69
|
+
|
61
70
|
it 'should log an application' do
|
62
71
|
mock_app do
|
63
72
|
enable :logging
|
@@ -262,7 +271,7 @@ describe "options :source_location" do
|
|
262
271
|
|
263
272
|
it 'should output source_location if :source_location is set to true' do
|
264
273
|
stub_root { Padrino.logger.debug("hello world") }
|
265
|
-
assert_match /\[test\/test_logger\.rb
|
274
|
+
assert_match /\[test\/test_logger\.rb:#{__LINE__-1}\] hello world/, Padrino.logger.log.string
|
266
275
|
end
|
267
276
|
|
268
277
|
it 'should output source_location if file path is relative' do
|
@@ -109,5 +109,15 @@ describe "SystemReloader" do
|
|
109
109
|
FileUtils.rm tmp_file
|
110
110
|
end
|
111
111
|
end
|
112
|
+
|
113
|
+
it 'should not fail with superclass mismatch when reloading descendant classes with no instances' do
|
114
|
+
Padrino.clear!
|
115
|
+
require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/stealthy/app.rb')
|
116
|
+
@app = SystemStealthyClassDemo
|
117
|
+
Padrino.mount(SystemStealthyClassDemo).to("/")
|
118
|
+
get '/'
|
119
|
+
FileUtils.touch File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb')
|
120
|
+
Padrino.reload!
|
121
|
+
end
|
112
122
|
end
|
113
123
|
end
|
data/test/test_routing.rb
CHANGED
@@ -436,6 +436,16 @@ describe "Routing" do
|
|
436
436
|
assert_equal 406, status
|
437
437
|
end
|
438
438
|
|
439
|
+
it 'should provide proper content when :provides is specified and Accept: `*/*` requested' do
|
440
|
+
mock_app do
|
441
|
+
get(:text, :provides => :text) { "text" }
|
442
|
+
end
|
443
|
+
header 'Accept', '*/*'
|
444
|
+
get "/text"
|
445
|
+
assert_equal 200, status
|
446
|
+
assert_equal "text", body
|
447
|
+
end
|
448
|
+
|
439
449
|
it 'should return 404 on file extensions it does not provide and flag is not set' do
|
440
450
|
mock_app do
|
441
451
|
get(:a, :provides => [:html, :js]){ content_type }
|
@@ -2325,4 +2335,43 @@ describe "Routing" do
|
|
2325
2335
|
assert ok?
|
2326
2336
|
assert_equal 'bar', body
|
2327
2337
|
end
|
2338
|
+
|
2339
|
+
it 'should generate urls and absolute urls' do
|
2340
|
+
mock_app do
|
2341
|
+
get(:index) { settings.url(:index) }
|
2342
|
+
get(:absolute) { settings.absolute_url(:absolute) }
|
2343
|
+
end
|
2344
|
+
get '/'
|
2345
|
+
assert_equal '/', body
|
2346
|
+
get '/absolute'
|
2347
|
+
assert_equal 'http://localhost/absolute', body
|
2348
|
+
@app.set :base_url, 'http://example.com'
|
2349
|
+
get '/absolute'
|
2350
|
+
assert_equal 'http://example.com/absolute', body
|
2351
|
+
end
|
2352
|
+
|
2353
|
+
it 'should not match if route regexps matches with incorrect_path[0..2]' do
|
2354
|
+
mock_app do
|
2355
|
+
get(:index) { "bork" }
|
2356
|
+
get("/foo") { "foo" }
|
2357
|
+
end
|
2358
|
+
get "/"
|
2359
|
+
assert_equal 200, status
|
2360
|
+
get "/a"
|
2361
|
+
assert_equal 404, status
|
2362
|
+
get "/foo"
|
2363
|
+
assert_equal 200, status
|
2364
|
+
get "/fo"
|
2365
|
+
assert_equal 404, status
|
2366
|
+
end
|
2367
|
+
|
2368
|
+
it "should maintain Sinatra's params indifference" do
|
2369
|
+
mock_app do
|
2370
|
+
get '/update', :with => :id do
|
2371
|
+
"#{params[:product]['title']}==#{params[:product][:title]}"
|
2372
|
+
end
|
2373
|
+
end
|
2374
|
+
get '/update/1?product[title]=test'
|
2375
|
+
assert_equal 'test==test', body
|
2376
|
+
end
|
2328
2377
|
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.13.0.
|
4
|
+
version: 0.13.0.beta3
|
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: 2015-
|
14
|
+
date: 2015-08-02 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: padrino-support
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.13.0.
|
22
|
+
version: 0.13.0.beta3
|
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.13.0.
|
29
|
+
version: 0.13.0.beta3
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: sinatra
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -177,6 +177,8 @@ files:
|
|
177
177
|
- test/fixtures/apps/precompiled_app.rb
|
178
178
|
- test/fixtures/apps/simple.rb
|
179
179
|
- test/fixtures/apps/static.rb
|
180
|
+
- test/fixtures/apps/stealthy/app.rb
|
181
|
+
- test/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb
|
180
182
|
- test/fixtures/apps/system.rb
|
181
183
|
- test/fixtures/apps/system_class_methods_demo.rb
|
182
184
|
- test/fixtures/apps/system_instance_methods_demo.rb
|
@@ -261,6 +263,8 @@ test_files:
|
|
261
263
|
- test/fixtures/apps/precompiled_app.rb
|
262
264
|
- test/fixtures/apps/simple.rb
|
263
265
|
- test/fixtures/apps/static.rb
|
266
|
+
- test/fixtures/apps/stealthy/app.rb
|
267
|
+
- test/fixtures/apps/stealthy/helpers/stealthy_class_helpers.rb
|
264
268
|
- test/fixtures/apps/system.rb
|
265
269
|
- test/fixtures/apps/system_class_methods_demo.rb
|
266
270
|
- test/fixtures/apps/system_instance_methods_demo.rb
|