padrino-core 0.13.1.beta1 → 0.13.1
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/path_router/matcher.rb +4 -0
- data/lib/padrino-core/reloader/rack.rb +4 -1
- data/lib/padrino-core/reloader.rb +3 -1
- data/lib/padrino-core/version.rb +1 -1
- data/test/fixtures/apps/custom_dependencies/custom_dependencies.rb +11 -0
- data/test/fixtures/apps/custom_dependencies/my_dependencies/my_dependency.rb +0 -0
- data/test/test_application.rb +11 -4
- data/test/test_params_protection.rb +15 -15
- data/test/test_reloader_system.rb +20 -0
- data/test/test_routing.rb +4 -1
- metadata +25 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fc93251e3aa682cd94a019446ab096a31f4365d
|
4
|
+
data.tar.gz: b7c3653e92dc92655372e0359422307d84122b19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54ff19551060bd54f259c55cf383ab8a39a737a4e31fa3ebd03dd44e2353a41dac726478ebfb42af22fc0a412abef9579e88e8d4adb240df6348fc943cba7f98
|
7
|
+
data.tar.gz: 54d8d4b3a35ffc91e16180b342fdcc8d04d043eb085f2e0e52bb88ee9b4ec3cbee00c9a016e6a972b29951abf772ac0ff6381e7abc7cd72ddf18484ff9abe1dd
|
@@ -38,7 +38,11 @@ module Padrino
|
|
38
38
|
#
|
39
39
|
def expand(params)
|
40
40
|
params = params.merge(@default_values) if @default_values.is_a?(Hash)
|
41
|
+
params, query = params.each_with_object([{}, {}]) do |(key, val), parts|
|
42
|
+
parts[handler.names.include?(key.to_s) ? 0 : 1][key] = val
|
43
|
+
end
|
41
44
|
expanded_path = handler.expand(:append, params)
|
45
|
+
expanded_path += ?? + Padrino::Utils.build_uri_query(query) unless query.empty?
|
42
46
|
expanded_path
|
43
47
|
end
|
44
48
|
|
@@ -11,12 +11,15 @@ module Padrino
|
|
11
11
|
@app = app
|
12
12
|
@cooldown = cooldown
|
13
13
|
@last = (Time.now - cooldown)
|
14
|
+
@mutex = Mutex.new
|
14
15
|
end
|
15
16
|
|
16
17
|
# Invoked in order to perform the reload as part of the request stack.
|
17
18
|
def call(env)
|
18
19
|
if @cooldown && Time.now > @last + @cooldown
|
19
|
-
|
20
|
+
@mutex.synchronize do
|
21
|
+
Padrino.reload!
|
22
|
+
end
|
20
23
|
@last = Time.now
|
21
24
|
end
|
22
25
|
@app.call(env)
|
@@ -221,7 +221,9 @@ module Padrino
|
|
221
221
|
#
|
222
222
|
def files_for_rotation
|
223
223
|
files = Set.new
|
224
|
-
|
224
|
+
Padrino.dependency_paths.each do |path|
|
225
|
+
files += Dir.glob(path)
|
226
|
+
end
|
225
227
|
reloadable_apps.each do |app|
|
226
228
|
files << app.app_file
|
227
229
|
files += Dir.glob(app.app_obj.prerequisites)
|
data/lib/padrino-core/version.rb
CHANGED
File without changes
|
data/test/test_application.rb
CHANGED
@@ -149,11 +149,18 @@ describe "Application" do
|
|
149
149
|
assert_equal 'custom error', body
|
150
150
|
end
|
151
151
|
|
152
|
-
it 'should
|
153
|
-
|
152
|
+
it 'should pass Routing#parent to Module#parent' do
|
153
|
+
# see naming collision in issue #1814
|
154
|
+
begin
|
154
155
|
ConstTest = Class.new(Padrino::Application)
|
155
|
-
|
156
|
-
|
156
|
+
class Module
|
157
|
+
def parent
|
158
|
+
:dirty
|
159
|
+
end
|
160
|
+
end
|
161
|
+
assert_equal :dirty, ConstTest.parent
|
162
|
+
ensure
|
163
|
+
Module.instance_eval{ undef :parent }
|
157
164
|
end
|
158
165
|
end
|
159
166
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
|
-
require 'active_support/core_ext/hash/conversions'
|
3
2
|
|
4
3
|
describe "Padrino::ParamsProtection" do
|
5
4
|
before do
|
@@ -7,6 +6,7 @@ describe "Padrino::ParamsProtection" do
|
|
7
6
|
@kim = { 'name' => 'Kim Bauer', 'position' => 'daughter', 'child' => @teri }
|
8
7
|
@jack = { 'name' => 'Jack Bauer', 'position' => 'terrorist', 'child' => @kim }
|
9
8
|
@family = { 'name' => 'Bauer', 'persons' => { 1 => @teri, 2 => @kim, 3 => @jack } }
|
9
|
+
@jack_query = Padrino::Utils.build_uri_query(@jack)
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'should drop all parameters except allowed ones' do
|
@@ -17,7 +17,7 @@ describe "Padrino::ParamsProtection" do
|
|
17
17
|
''
|
18
18
|
end
|
19
19
|
end
|
20
|
-
post '/basic?' + @
|
20
|
+
post '/basic?' + @jack_query
|
21
21
|
assert_equal({ 'name' => @jack['name'] }, result)
|
22
22
|
end
|
23
23
|
|
@@ -29,7 +29,7 @@ describe "Padrino::ParamsProtection" do
|
|
29
29
|
''
|
30
30
|
end
|
31
31
|
end
|
32
|
-
post '/basic?' + @
|
32
|
+
post '/basic?' + @jack_query
|
33
33
|
assert_equal(@jack, result)
|
34
34
|
end
|
35
35
|
|
@@ -41,7 +41,7 @@ describe "Padrino::ParamsProtection" do
|
|
41
41
|
''
|
42
42
|
end
|
43
43
|
end
|
44
|
-
post '/basic?' + @
|
44
|
+
post '/basic?' + @jack_query
|
45
45
|
assert_equal(
|
46
46
|
[
|
47
47
|
{ 'name' => @jack['name'], 'child' => { 'name' => @kim['name'], 'child' => { 'name' => @teri['name'] } } },
|
@@ -59,7 +59,7 @@ describe "Padrino::ParamsProtection" do
|
|
59
59
|
''
|
60
60
|
end
|
61
61
|
end
|
62
|
-
post '/basic?' + @
|
62
|
+
post '/basic?' + @jack_query
|
63
63
|
assert_equal({ 'name' => @jack['name'], 'position' => 'anti-terrorist' }, result)
|
64
64
|
end
|
65
65
|
|
@@ -71,7 +71,7 @@ describe "Padrino::ParamsProtection" do
|
|
71
71
|
''
|
72
72
|
end
|
73
73
|
end
|
74
|
-
post '/basic/24/42?' + @
|
74
|
+
post '/basic/24/42?' + @jack_query
|
75
75
|
assert_equal({ 'name' => @jack['name'], 'id' => '24', 'tag' => '42' }, result)
|
76
76
|
end
|
77
77
|
|
@@ -83,7 +83,7 @@ describe "Padrino::ParamsProtection" do
|
|
83
83
|
''
|
84
84
|
end
|
85
85
|
end
|
86
|
-
post '/basic/24?' + @
|
86
|
+
post '/basic/24?' + @jack_query
|
87
87
|
assert_equal({ 'id' => '24' }, result)
|
88
88
|
end
|
89
89
|
|
@@ -99,9 +99,9 @@ describe "Padrino::ParamsProtection" do
|
|
99
99
|
''
|
100
100
|
end
|
101
101
|
end
|
102
|
-
get '/hide/1?' + @
|
102
|
+
get '/hide/1?' + @jack_query
|
103
103
|
assert_equal({"id"=>"1"}, result)
|
104
|
-
get '/show/1?' + @
|
104
|
+
get '/show/1?' + @jack_query
|
105
105
|
assert_equal({"id"=>"1"}.merge(@jack), result)
|
106
106
|
end
|
107
107
|
|
@@ -133,13 +133,13 @@ describe "Padrino::ParamsProtection" do
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
end
|
136
|
-
post '/persons/create?' + @
|
136
|
+
post '/persons/create?' + @jack_query
|
137
137
|
assert_equal({ 'name' => @jack['name'], 'position' => 'terrorist' }, result)
|
138
138
|
post '/persons/update/1?name=Chloe+O\'Brian&position=hacker'
|
139
139
|
assert_equal({ 'id' => '1', 'name' => 'Chloe O\'Brian' }, result)
|
140
|
-
post '/persons/delete?' + @
|
140
|
+
post '/persons/delete?' + @jack_query
|
141
141
|
assert_equal(@jack, result)
|
142
|
-
post '/persons/destroy/1?' + @
|
142
|
+
post '/persons/destroy/1?' + @jack_query
|
143
143
|
assert_equal({"id"=>"1"}, result)
|
144
144
|
get '/noparam?a=1;b=2'
|
145
145
|
assert_equal({}, result)
|
@@ -153,7 +153,7 @@ describe "Padrino::ParamsProtection" do
|
|
153
153
|
''
|
154
154
|
end
|
155
155
|
end
|
156
|
-
post '/family?' + @family
|
156
|
+
post '/family?' + Padrino::Utils.build_uri_query(@family)
|
157
157
|
assert_equal({"persons" => {"3" => {"name" => @jack["name"]}, "2" => {"name" => @kim["name"]}, "1" => {"name" => @teri["name"]}}}, result)
|
158
158
|
end
|
159
159
|
|
@@ -165,7 +165,7 @@ describe "Padrino::ParamsProtection" do
|
|
165
165
|
''
|
166
166
|
end
|
167
167
|
end
|
168
|
-
post '/family?' +
|
168
|
+
post '/family?' + Padrino::Utils.build_uri_query(:names => %w{Jack Kim Teri})
|
169
169
|
assert_equal({"names" => %w[Jack Kim Teri]}, result)
|
170
170
|
end
|
171
171
|
|
@@ -177,7 +177,7 @@ describe "Padrino::ParamsProtection" do
|
|
177
177
|
''
|
178
178
|
end
|
179
179
|
end
|
180
|
-
post '/i?' +
|
180
|
+
post '/i?' + Padrino::Utils.build_uri_query(:gotta => { :what => 'go', :who => 'self' })
|
181
181
|
assert_equal({"gotta" => {"what" => "go"}}, result)
|
182
182
|
end
|
183
183
|
|
@@ -2,6 +2,7 @@ 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')
|
5
6
|
|
6
7
|
describe "SystemReloader" do
|
7
8
|
describe 'for wierd and difficult reload events' do
|
@@ -120,4 +121,23 @@ describe "SystemReloader" do
|
|
120
121
|
Padrino.reload!
|
121
122
|
end
|
122
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
|
+
end
|
123
143
|
end
|
data/test/test_routing.rb
CHANGED
@@ -259,6 +259,7 @@ describe "Routing" do
|
|
259
259
|
get(:anchor) { url(:anchor, :anchor => 'comments') }
|
260
260
|
get(:fragment) { url(:anchor, :fragment => 'comments') }
|
261
261
|
get(:fragment2) { url(:anchor, :fragment => :comments) }
|
262
|
+
get(:gangsta) { url(:gangsta, :foo => { :bar => :baz }, :hoge => :fuga) }
|
262
263
|
get([:hash, :id]){ url(:hash, :id => 1) }
|
263
264
|
get(:array, :with => :id){ url(:array, 23) }
|
264
265
|
get([:array, :id]){ url(:array, 23) }
|
@@ -307,6 +308,8 @@ describe "Routing" do
|
|
307
308
|
assert_equal "/drugs/123/destroy", body
|
308
309
|
delete "/123/destroy"
|
309
310
|
assert_equal "/123/destroy", body
|
311
|
+
get "/gangsta"
|
312
|
+
assert_equal "/gangsta?foo%5Bbar%5D=baz&hoge=fuga", body
|
310
313
|
get "/splatter/123/456"
|
311
314
|
assert_equal "/splatter/123/456", body
|
312
315
|
end
|
@@ -2077,7 +2080,7 @@ describe "Routing" do
|
|
2077
2080
|
mock_app do
|
2078
2081
|
get(:index) { "%s %s" % [params[:account][:name], params[:account][:surname]] }
|
2079
2082
|
end
|
2080
|
-
get "/?" +
|
2083
|
+
get "/?" + Padrino::Utils.build_uri_query(:account => { :name => 'foo', :surname => 'bar' })
|
2081
2084
|
assert_equal 'foo bar', body
|
2082
2085
|
get @app.url(:index, "account[name]" => "foo", "account[surname]" => "bar")
|
2083
2086
|
assert_equal 'foo bar', body
|
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.1
|
4
|
+
version: 0.13.1
|
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:
|
14
|
+
date: 2016-01-17 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: padrino-support
|
@@ -19,82 +19,82 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.13.1
|
22
|
+
version: 0.13.1
|
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.1
|
29
|
+
version: 0.13.1
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: sinatra
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - ~>
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: 1.4.6
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: 1.4.6
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: mustermann19
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
|
-
- -
|
48
|
+
- - '>='
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '0'
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - '>='
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '0'
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: thor
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
|
-
- -
|
62
|
+
- - ~>
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '0.18'
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- -
|
69
|
+
- - ~>
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0.18'
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: activesupport
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
|
-
- -
|
76
|
+
- - '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '3.1'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - '>='
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '3.1'
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: rack-protection
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
|
-
- -
|
90
|
+
- - '>='
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: 1.5.0
|
93
93
|
type: :runtime
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
|
-
- -
|
97
|
+
- - '>='
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: 1.5.0
|
100
100
|
description: The Padrino core gem required for use of this framework
|
@@ -105,9 +105,9 @@ extensions: []
|
|
105
105
|
extra_rdoc_files:
|
106
106
|
- README.rdoc
|
107
107
|
files:
|
108
|
-
-
|
109
|
-
-
|
110
|
-
-
|
108
|
+
- .document
|
109
|
+
- .gitignore
|
110
|
+
- .yardopts
|
111
111
|
- LICENSE.txt
|
112
112
|
- README.rdoc
|
113
113
|
- Rakefile
|
@@ -157,6 +157,8 @@ files:
|
|
157
157
|
- test/fixtures/app_gem/lib/app_gem.rb
|
158
158
|
- test/fixtures/app_gem/lib/app_gem/version.rb
|
159
159
|
- test/fixtures/apps/complex.rb
|
160
|
+
- test/fixtures/apps/custom_dependencies/custom_dependencies.rb
|
161
|
+
- test/fixtures/apps/custom_dependencies/my_dependencies/my_dependency.rb
|
160
162
|
- test/fixtures/apps/demo_app.rb
|
161
163
|
- test/fixtures/apps/demo_demo.rb
|
162
164
|
- test/fixtures/apps/demo_project/api/app.rb
|
@@ -218,19 +220,19 @@ licenses:
|
|
218
220
|
metadata: {}
|
219
221
|
post_install_message:
|
220
222
|
rdoc_options:
|
221
|
-
-
|
223
|
+
- --charset=UTF-8
|
222
224
|
require_paths:
|
223
225
|
- lib
|
224
226
|
required_ruby_version: !ruby/object:Gem::Requirement
|
225
227
|
requirements:
|
226
|
-
- -
|
228
|
+
- - '>='
|
227
229
|
- !ruby/object:Gem::Version
|
228
230
|
version: '0'
|
229
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
232
|
requirements:
|
231
|
-
- -
|
233
|
+
- - '>='
|
232
234
|
- !ruby/object:Gem::Version
|
233
|
-
version: 1.3.
|
235
|
+
version: 1.3.6
|
234
236
|
requirements: []
|
235
237
|
rubyforge_project: padrino-core
|
236
238
|
rubygems_version: 2.4.8
|
@@ -244,6 +246,8 @@ test_files:
|
|
244
246
|
- test/fixtures/app_gem/lib/app_gem.rb
|
245
247
|
- test/fixtures/app_gem/lib/app_gem/version.rb
|
246
248
|
- test/fixtures/apps/complex.rb
|
249
|
+
- test/fixtures/apps/custom_dependencies/custom_dependencies.rb
|
250
|
+
- test/fixtures/apps/custom_dependencies/my_dependencies/my_dependency.rb
|
247
251
|
- test/fixtures/apps/demo_app.rb
|
248
252
|
- test/fixtures/apps/demo_demo.rb
|
249
253
|
- test/fixtures/apps/demo_project/api/app.rb
|