padrino-core 0.14.3 → 0.14.4
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 +5 -5
- data/lib/padrino-core/path_router/matcher.rb +1 -1
- data/lib/padrino-core/reloader.rb +2 -2
- data/lib/padrino-core/reloader/storage.rb +27 -4
- data/lib/padrino-core/version.rb +1 -1
- data/test/fixtures/dependencies/nested/j.rb +2 -0
- data/test/fixtures/dependencies/nested/k.rb +2 -0
- data/test/fixtures/dependencies/nested/l.rb +4 -0
- data/test/fixtures/dependencies/nested/m.rb +5 -0
- data/test/fixtures/dependencies/nested/n.rb +2 -0
- data/test/test_dependencies.rb +11 -0
- data/test/test_routing.rb +10 -0
- metadata +10 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d970982e5c919bfa97c39b3898bd59d396681d17c5b9eaf17854667ce52715ff
|
4
|
+
data.tar.gz: 4be78f1700017e77554317d4eeca9f94ccc00a685a1c47f1139e2b80816b80f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cbf8c80aba78a17cab9ff325110d4045eb8363803ce47f94cc8b40b022bdeb3864e0a3804434cb5250c5bcb49df3b92c3577e87945b5c1642bf188d3ba59b7e
|
7
|
+
data.tar.gz: 4fcc0feb28750c7fe358162a7f40d2da0c73147610baa8e61b36d24eda1bc7119e31694178b59fed06a8d9eb865513b3ef250c8f2a5c0849de593b344081a826
|
@@ -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
|
@@ -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
|
data/lib/padrino-core/version.rb
CHANGED
data/test/test_dependencies.rb
CHANGED
@@ -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" }
|
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.
|
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-
|
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,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.14.
|
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.
|
29
|
+
version: 0.14.4
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: sinatra
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,6 +154,11 @@ files:
|
|
154
154
|
- test/fixtures/dependencies/d.rb
|
155
155
|
- test/fixtures/dependencies/linear/h.rb
|
156
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
|
157
162
|
- test/fixtures/reloadable_apps/external/app/app.rb
|
158
163
|
- test/fixtures/reloadable_apps/external/app/controllers/base.rb
|
159
164
|
- test/fixtures/reloadable_apps/main/app.rb
|
@@ -198,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
203
|
version: 1.3.6
|
199
204
|
requirements: []
|
200
205
|
rubyforge_project: padrino-core
|
201
|
-
rubygems_version: 2.
|
206
|
+
rubygems_version: 2.7.8
|
202
207
|
signing_key:
|
203
208
|
specification_version: 4
|
204
209
|
summary: The required Padrino core gem
|