padrino-core 0.14.2 → 0.14.4

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
- SHA1:
3
- metadata.gz: 55469df6bfe7c7ffb26bb239433a9f76b3096a34
4
- data.tar.gz: 9f5711bd6b352aa64fd1fd4e744f8028dfce6f98
2
+ SHA256:
3
+ metadata.gz: d970982e5c919bfa97c39b3898bd59d396681d17c5b9eaf17854667ce52715ff
4
+ data.tar.gz: 4be78f1700017e77554317d4eeca9f94ccc00a685a1c47f1139e2b80816b80f7
5
5
  SHA512:
6
- metadata.gz: 84f5833bf11cd189aaa0c08c921c21594acca9e7afed57e47fae5a551f4f263cfe445b44009bca6eb69b8f4e69878a9d286d30e0913eab627f2c8a8d5ff117a3
7
- data.tar.gz: 15726f751b0d60914c96637b3493b78ace6c02b8e8e1a0d68b7dc0fe002b5a2d864dc2b0d36a541d2979c9c782111aedb854ba9235b6f75d2a39dc9317bccf83
6
+ metadata.gz: 0cbf8c80aba78a17cab9ff325110d4045eb8363803ce47f94cc8b40b022bdeb3864e0a3804434cb5250c5bcb49df3b92c3577e87945b5c1642bf188d3ba59b7e
7
+ data.tar.gz: 4fcc0feb28750c7fe358162a7f40d2da0c73147610baa8e61b36d24eda1bc7119e31694178b59fed06a8d9eb865513b3ef250c8f2a5c0849de593b344081a826
@@ -929,10 +929,8 @@ module Padrino
929
929
  end
930
930
 
931
931
  def dispatch!
932
- unless @params
933
- @params = defined?(Sinatra::IndifferentHash) ? Sinatra::IndifferentHash[@request.params] : indifferent_params(@request.params)
934
- force_encoding(@params)
935
- end
932
+ @params = defined?(Sinatra::IndifferentHash) ? Sinatra::IndifferentHash[@request.params] : indifferent_params(@request.params)
933
+ force_encoding(@params)
936
934
  invoke do
937
935
  static! if settings.static? && (request.get? || request.head?)
938
936
  route!
@@ -21,7 +21,7 @@ module Padrino
21
21
  def match(pattern)
22
22
  if match_data = handler.match(pattern)
23
23
  match_data
24
- elsif mustermann? && pattern != "/" && pattern.end_with?("/")
24
+ elsif pattern != "/" && pattern.end_with?("/")
25
25
  handler.match(pattern[0..-2])
26
26
  end
27
27
  end
@@ -18,12 +18,13 @@ module Padrino
18
18
  files.delete(name)
19
19
  end
20
20
 
21
- def prepare(name)
21
+ def prepare(name, mtimes)
22
22
  file = remove(name)
23
23
  @old_entries ||= {}
24
24
  @old_entries[name] = {
25
25
  :constants => object_classes,
26
- :features => old_features = Set.new($LOADED_FEATURES.dup)
26
+ :features => old_features = Set.new($LOADED_FEATURES.dup),
27
+ :mtimes => mtimes.dup
27
28
  }
28
29
  features = file && file[:features] || []
29
30
  features.each{ |feature| Reloader.safe_load(feature, :force => true) }
@@ -39,8 +40,10 @@ module Padrino
39
40
  @old_entries.delete(name)
40
41
  end
41
42
 
42
- def rollback(name)
43
- new_constants = new_classes(@old_entries[name][:constants])
43
+ def rollback(name, mtimes)
44
+ new_constants = new_classes(@old_entries[name][:constants]).reject do |constant|
45
+ newly_commited_constant?(constant, mtimes, @old_entries[name][:mtimes])
46
+ end
44
47
  new_constants.each{ |klass| Reloader.remove_constant(klass) }
45
48
  @old_entries.delete(name)
46
49
  end
@@ -78,6 +81,26 @@ module Padrino
78
81
  snapshot.include?(klass) ? nil : klass
79
82
  end
80
83
  end
84
+
85
+ ##
86
+ # Returns true if and only if constant is commited after prepare
87
+ #
88
+ def newly_commited_constant?(constant, mtimes, old_mtimes)
89
+ newly_commited_files(files, mtimes, old_mtimes).each do |_, entry|
90
+ return true if entry[:constants].include?(constant)
91
+ end
92
+ false
93
+ end
94
+
95
+ ##
96
+ # Returns a list of entries in "files" that is commited after prepare
97
+ #
98
+ def newly_commited_files(files, mtimes, old_mtimes)
99
+ files.select do |file, _|
100
+ next true unless old_mtimes[file]
101
+ old_mtimes[file] < mtimes[file]
102
+ end
103
+ end
81
104
  end
82
105
  end
83
106
  end
@@ -90,7 +90,7 @@ module Padrino
90
90
  return unless options[:force] || file_changed?(file)
91
91
  return require(file) if feature_excluded?(file)
92
92
 
93
- Storage.prepare(file) # might call #safe_load recursively
93
+ Storage.prepare(file, MTIMES) # might call #safe_load recursively
94
94
  logger.devel(file_new?(file) ? :loading : :reload, began_at, file)
95
95
  begin
96
96
  with_silence{ require(file) }
@@ -101,7 +101,7 @@ module Padrino
101
101
  logger.exception exception, :short
102
102
  logger.error "Failed to load #{file}; removing partially defined constants"
103
103
  end
104
- Storage.rollback(file)
104
+ Storage.rollback(file, MTIMES)
105
105
  raise
106
106
  end
107
107
  end
@@ -6,7 +6,7 @@
6
6
  #
7
7
  module Padrino
8
8
  # The version constant for the current version of Padrino.
9
- VERSION = '0.14.2' unless defined?(Padrino::VERSION)
9
+ VERSION = '0.14.4' unless defined?(Padrino::VERSION)
10
10
 
11
11
  #
12
12
  # The current Padrino version.
data/padrino-core.gemspec CHANGED
@@ -24,8 +24,6 @@ Gem::Specification.new do |s|
24
24
  s.rdoc_options = ["--charset=UTF-8"]
25
25
 
26
26
  s.add_dependency("padrino-support", Padrino.version)
27
- s.add_dependency("sinatra", ">= 1.4.6")
28
- s.add_dependency("mustermann19")
27
+ s.add_dependency("sinatra", ">= 2.0.0")
29
28
  s.add_dependency("thor", "~> 0.18")
30
- s.add_dependency("rack-protection", ">= 1.5.0")
31
29
  end
@@ -0,0 +1,2 @@
1
+ class J < K
2
+ end
@@ -0,0 +1,2 @@
1
+ class K
2
+ end
@@ -0,0 +1,4 @@
1
+ Padrino.require_dependencies(
2
+ Padrino.root("fixtures/dependencies/nested/m.rb"),
3
+ Padrino.root("fixtures/dependencies/nested/n.rb")
4
+ )
@@ -0,0 +1,5 @@
1
+ class M
2
+ def self.hello
3
+ "hello"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ class N < J
2
+ end
@@ -65,5 +65,16 @@ describe "Dependencies" do
65
65
  end
66
66
  end
67
67
  end
68
+
69
+ it 'should not remove constants that are newly commited in nested require_dependencies' do
70
+ capture_io do
71
+ Padrino.require_dependencies(
72
+ Padrino.root("fixtures/dependencies/nested/j.rb"),
73
+ Padrino.root("fixtures/dependencies/nested/k.rb"),
74
+ Padrino.root("fixtures/dependencies/nested/l.rb")
75
+ )
76
+ end
77
+ assert_equal "hello", M.hello
78
+ end
68
79
  end
69
80
  end
data/test/test_routing.rb CHANGED
@@ -156,6 +156,16 @@ describe "Routing" do
156
156
  assert_equal "My lucky number: 99 99", body
157
157
  end
158
158
 
159
+ it 'should ignore trailing slashes' do
160
+ mock_app do
161
+ get(%r./trailing.) { "slash" }
162
+ end
163
+ get "/trailing"
164
+ assert_equal "slash", body
165
+ get "/trailing/"
166
+ assert_equal "slash", body
167
+ end
168
+
159
169
  it 'should accept regexp routes with generate with :generate_with' do
160
170
  mock_app do
161
171
  get(%r{/fob|/baz}, :name => :foo, :generate_with => '/fob') { "regexp" }
@@ -2255,7 +2265,6 @@ describe "Routing" do
2255
2265
  end
2256
2266
 
2257
2267
  it "should support named captures like %r{/hello/(?<person>[^/?#]+)} on Ruby >= 1.9" do
2258
- next if RUBY_VERSION < '1.9'
2259
2268
  mock_app do
2260
2269
  get Regexp.new('/hello/(?<person>[^/?#]+)') do
2261
2270
  "Hello #{params['person']}"
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.14.2
4
+ version: 0.14.4
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-01-02 00:00:00.000000000 Z
14
+ date: 2018-11-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: padrino-support
@@ -19,42 +19,28 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.14.2
22
+ version: 0.14.4
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.14.2
29
+ version: 0.14.4
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
- version: 1.4.6
36
+ version: 2.0.0
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
- version: 1.4.6
44
- - !ruby/object:Gem::Dependency
45
- name: mustermann19
46
- requirement: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: '0'
51
- type: :runtime
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: '0'
43
+ version: 2.0.0
58
44
  - !ruby/object:Gem::Dependency
59
45
  name: thor
60
46
  requirement: !ruby/object:Gem::Requirement
@@ -69,20 +55,6 @@ dependencies:
69
55
  - - "~>"
70
56
  - !ruby/object:Gem::Version
71
57
  version: '0.18'
72
- - !ruby/object:Gem::Dependency
73
- name: rack-protection
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.5.0
79
- type: :runtime
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: 1.5.0
86
58
  description: The Padrino core gem required for use of this framework
87
59
  email: padrinorb@gmail.com
88
60
  executables:
@@ -182,6 +154,11 @@ files:
182
154
  - test/fixtures/dependencies/d.rb
183
155
  - test/fixtures/dependencies/linear/h.rb
184
156
  - test/fixtures/dependencies/linear/i.rb
157
+ - test/fixtures/dependencies/nested/j.rb
158
+ - test/fixtures/dependencies/nested/k.rb
159
+ - test/fixtures/dependencies/nested/l.rb
160
+ - test/fixtures/dependencies/nested/m.rb
161
+ - test/fixtures/dependencies/nested/n.rb
185
162
  - test/fixtures/reloadable_apps/external/app/app.rb
186
163
  - test/fixtures/reloadable_apps/external/app/controllers/base.rb
187
164
  - test/fixtures/reloadable_apps/main/app.rb
@@ -226,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
203
  version: 1.3.6
227
204
  requirements: []
228
205
  rubyforge_project: padrino-core
229
- rubygems_version: 2.6.12
206
+ rubygems_version: 2.7.8
230
207
  signing_key:
231
208
  specification_version: 4
232
209
  summary: The required Padrino core gem