utopia 1.2.0 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31ace1eb6c636da91d00f8eee84b9dcaf839f817
4
- data.tar.gz: 27d8124f0df0d66189d9230cce119db1a39901cd
3
+ metadata.gz: e53e0a1f210f0c4e8e14ff4f7e1cf21bbc705f18
4
+ data.tar.gz: 3756ebee30e3b76f4712d7f129aecdf943d60931
5
5
  SHA512:
6
- metadata.gz: 1ccc85d249b116d20fcba8403244b8d466aecfe527cf0a13aa79b19ee78e162c6acd9e458a40bf5064dae17b2108c0b4bd851ca2e4fc06a7e84990db148abeac
7
- data.tar.gz: 5e95784314d4c28253714caac80b9efec859f988bf908784da15d65c2d460623ee2607505a93b931b392558b7bbfe41c328814cd1631a6979a024016931dd062
6
+ metadata.gz: f751489f085bf36b52d6a0b842e127f56d1061d0050f1452ae9798d2deadd2fdef426c254a1ec15a7f06715ef01e56a5c78c2e5abea095f7cbd89c925d136776
7
+ data.tar.gz: 679a51d33577028c5fdc27a66498617e9b5e4f764a483a387f9b005df33c6ded2439cebb8ba6f30be0a6c9d670694407289d22681553b916816328517dfa47e3
@@ -42,10 +42,18 @@ module Utopia
42
42
  end
43
43
 
44
44
  @tags = options.fetch(:tags, {})
45
+
46
+ self.freeze
47
+ end
48
+
49
+ def freeze
50
+ @root.freeze
51
+ @tags.freeze
52
+
53
+ super
45
54
  end
46
55
 
47
56
  attr :root
48
- attr :passthrough
49
57
 
50
58
  def fetch_xml(path)
51
59
  if @templates
@@ -36,6 +36,15 @@ module Utopia
36
36
  end
37
37
 
38
38
  class << self
39
+ def freeze
40
+ # This ensures that all class variables are frozen.
41
+ self.instance_variables.each do |name|
42
+ self.instance_variable_get(name).freeze
43
+ end
44
+
45
+ super
46
+ end
47
+
39
48
  def direct?(path)
40
49
  path.dirname == uri_path
41
50
  end
@@ -35,6 +35,15 @@ module Utopia
35
35
  def initialize(arguments, block)
36
36
  @arguments = arguments
37
37
  @block = block
38
+
39
+ self.freeze
40
+ end
41
+
42
+ def freeze
43
+ @arguments.freeze
44
+ @block.freeze
45
+
46
+ super
38
47
  end
39
48
 
40
49
  attr :arguments
@@ -48,9 +57,19 @@ module Utopia
48
57
  end
49
58
 
50
59
  class ExtractPrefixRule < Rule
51
- def apply(context, request, path)
52
- @matcher ||= Path::Matcher.new(@arguments)
60
+ def initialize(arguments, block)
61
+ @matcher = Path::Matcher.new(arguments)
53
62
 
63
+ super
64
+ end
65
+
66
+ def freeze
67
+ @matcher.freeze
68
+
69
+ super
70
+ end
71
+
72
+ def apply(context, request, path)
54
73
  if match_data = @matcher.match(path)
55
74
  apply_match_to_context(match_data, context)
56
75
 
@@ -57,6 +57,12 @@ module Utopia
57
57
 
58
58
  attr :app
59
59
 
60
+ def freeze
61
+ @root.freeze
62
+
63
+ super
64
+ end
65
+
60
66
  def lookup_controller(path)
61
67
  if @controllers
62
68
  @controllers.fetch_or_store(path.to_s) do
@@ -90,6 +96,10 @@ module Utopia
90
96
  # Give the controller a useful name:
91
97
  # Controllers.define(klass)
92
98
 
99
+ # We lock down the controller class to prevent unsafe modifications:
100
+ klass.freeze
101
+
102
+ # Create an instance of the controller:
93
103
  return klass.new
94
104
  else
95
105
  return nil
@@ -26,8 +26,16 @@ module Utopia
26
26
  class ExceptionHandler
27
27
  def initialize(app, location)
28
28
  @app = app
29
-
29
+
30
30
  @location = location
31
+
32
+ self.freeze
33
+ end
34
+
35
+ def freeze
36
+ @location.freeze
37
+
38
+ super
31
39
  end
32
40
 
33
41
  def fatal_error(env, exception)
@@ -86,8 +86,20 @@ module Utopia
86
86
  @nonlocalized = options.fetch(:nonlocalized, [])
87
87
 
88
88
  # puts "All:#{@all_locales.inspect} defaults:#{@default_locales.inspect} default:#{default_locale}"
89
+
90
+ self.freeze
89
91
  end
90
-
92
+
93
+ def freeze
94
+ @all_locale.freeze
95
+ @default_locales.freeze
96
+ @default_locale.freeze
97
+ @hosts.freeze
98
+ @nonlocalized.freeze
99
+
100
+ super
101
+ end
102
+
91
103
  attr :all_locales
92
104
  attr :default_locale
93
105
 
@@ -37,7 +37,7 @@ module Utopia
37
37
 
38
38
  class Redirector
39
39
  # This redirects directories to the directory + 'index'
40
- DIRECTORY_INDEX = [/^(.*)\/$/, lambda{|prefix| [307, {HTTP::LOCATION => "#{prefix}index"}, []]}]
40
+ DIRECTORY_INDEX = [/^(.*)\/$/, lambda{|prefix| [307, {HTTP::LOCATION => "#{prefix}index"}, []]}].freeze
41
41
 
42
42
  # Redirects a whole source tree to a destination tree, given by the roots.
43
43
  def self.moved(source_root, destination_root)
@@ -76,9 +76,9 @@ module Utopia
76
76
  normalized = []
77
77
 
78
78
  patterns.each do |pattern|
79
- uri = pattern.pop
79
+ *keys, uri = *pattern
80
80
 
81
- pattern.each do |key|
81
+ keys.each do |key|
82
82
  normalized.push([key, uri])
83
83
  end
84
84
  end
@@ -106,6 +106,16 @@ module Utopia
106
106
  @patterns = normalize_patterns(@patterns)
107
107
 
108
108
  @errors = options[:errors]
109
+
110
+ self.freeze
111
+ end
112
+
113
+ def freeze
114
+ @strings.freeze
115
+ @patterns.freeze
116
+ @errors.freeze
117
+
118
+ super
109
119
  end
110
120
 
111
121
  def redirect(uri, match_data)
data/lib/utopia/static.rb CHANGED
@@ -196,7 +196,7 @@ module Utopia
196
196
 
197
197
  def initialize(app, **options)
198
198
  @app = app
199
- @root = options[:root] || Utopia::default_root
199
+ @root = (options[:root] || Utopia::default_root).freeze
200
200
 
201
201
  if options[:types]
202
202
  @extensions = load_mime_types(options[:types])
@@ -204,7 +204,17 @@ module Utopia
204
204
  @extensions = load_mime_types(MIME_TYPES[:default])
205
205
  end
206
206
 
207
- @cache_control = options[:cache_control] || "public, max-age=3600"
207
+ @cache_control = (options[:cache_control] || "public, max-age=3600")
208
+
209
+ self.freeze
210
+ end
211
+
212
+ def freeze
213
+ @root.freeze
214
+ @extensions.freeze
215
+ @cache_control.freeze
216
+
217
+ super
208
218
  end
209
219
 
210
220
  def fetch_file(path)
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Utopia
22
- VERSION = "1.2.0"
22
+ VERSION = "1.2.1"
23
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-07 00:00:00.000000000 Z
11
+ date: 2015-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trenni