utopia 2.17.1 → 2.18.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 271df583d52d5b53718ed38a322b2ed66d73d1e8ecfe460f18961e156ce92d10
4
- data.tar.gz: eaa41f80ca7244853bb1a08acc9ca0b1d76932e1cc3ebff58771fee1686eb4a7
3
+ metadata.gz: 7d3b6e619bc7db476e12fb64c15765a84349a8aabc6ee8b2b4e46a8ea80936e4
4
+ data.tar.gz: 3fe0eeafcf89805747e888122545ac3ab73e0a87a61f6a157eb8c7a86a442135
5
5
  SHA512:
6
- metadata.gz: b9d8cef96cde92e960559a9618d447512ec35905b75cb67a116899607181db2c7bc4de457fe7739a8aea20cd98f9f1e7ee56e33656cc84873aaacc1f4337e22a
7
- data.tar.gz: 4b6df56fabfc179ca95c11db76e31689ec722c1bdd6d1f430e5ce8f0a2d613d390bcee7f22b4399f59311c7ed2dc1843a706da49fc63af03f745319b0e0c322b
6
+ metadata.gz: 1a3a7677b5ee5f54ceb5267614f46ca8791d6ac5db62db29485e9392cb993e4b6e39ab6be6a1bbbd9faa7182368612f3347cf4faa769e44ad00d35b9c2abe99b
7
+ data.tar.gz: 5f9b615c2fe980279cbc0a5516d0e69e7c94af88805dce6d1c5409b860b5fb2be29f575da05c21aa750056232ef95c0fb802a789cc6630b24ff3fcd8514d0d49
@@ -110,10 +110,10 @@ module Utopia
110
110
  puts "make your life easier and more enjoyable.".center(78)
111
111
  puts ""
112
112
  puts "To start the development server, run:".center(78)
113
- puts "rake server".center(78)
113
+ puts "bake utopia:development".center(78)
114
114
  puts ""
115
115
  puts "For extreme productivity, please consult the online documentation".center(78)
116
- puts "https://github.com/ioquatix/utopia".center(78)
116
+ puts "https://github.com/socketry/utopia".center(78)
117
117
  puts " ~ Samuel. ".rjust(78)
118
118
  end
119
119
  end
@@ -52,7 +52,9 @@ module Utopia
52
52
 
53
53
  def href
54
54
  @href ||= @info.fetch(:uri) do
55
- (@path.dirname + @path.basename).to_s if @path
55
+ @info.fetch(:href) do
56
+ (@path.dirname + @path.basename).to_s if @path
57
+ end
56
58
  end
57
59
  end
58
60
 
@@ -94,17 +96,17 @@ module Utopia
94
96
  def to_anchor(base: nil, content: self.title, builder: nil, **attributes)
95
97
  attributes[:class] ||= 'link'
96
98
 
97
- Trenni::Builder.fragment(builder) do |builder|
99
+ Trenni::Builder.fragment(builder) do |inner_builder|
98
100
  if href?
99
101
  attributes[:href] ||= relative_href(base)
100
102
  attributes[:target] ||= @info[:target]
101
103
 
102
- builder.inline('a', attributes) do
103
- builder.text(content)
104
+ inner_builder.inline('a', attributes) do
105
+ inner_builder.text(content)
104
106
  end
105
107
  else
106
- builder.inline('span', attributes) do
107
- builder.text(content)
108
+ inner_builder.inline('span', attributes) do
109
+ inner_builder.text(content)
108
110
  end
109
111
  end
110
112
  end
@@ -142,7 +142,7 @@ module Utopia
142
142
  def load_metadata(path)
143
143
  yaml_path = File.join(path, LINKS_YAML)
144
144
 
145
- if File.exist?(yaml_path) && data = YAML::load_file(yaml_path)
145
+ if File.exist?(yaml_path) && data = YAML.load_file(yaml_path)
146
146
  return symbolize_keys(data)
147
147
  else
148
148
  return {}
@@ -234,7 +234,7 @@ module Utopia
234
234
  end
235
235
 
236
236
  def load_index(name, locale, info)
237
- info ||= {}
237
+ info ||= {}
238
238
 
239
239
  if locale and defaults = @metadata[name]
240
240
  info = defaults.merge(info)
@@ -245,17 +245,20 @@ module Utopia
245
245
  yield Link.new(:index, name, locale, path, info, path[-2])
246
246
  end
247
247
 
248
+ DEFAULT_INDEX_INFO = {href: nil}.freeze
249
+
250
+ # The default index for a directory which has no contents.
248
251
  def load_default_index(name = INDEX, info = {})
249
252
  path = @top + name
250
253
 
251
254
  if info
252
- info = {uri: nil}.merge(info)
255
+ info = DEFAULT_INDEX_INFO.merge(info)
253
256
  else
254
- info = {uri: nil}
257
+ info = DEFAULT_INDEX_INFO
255
258
  end
256
259
 
257
260
  # Specify a nil uri if no index could be found for the directory:
258
- yield Link.new(:index, name, nil, @top, info, path[-2])
261
+ yield Link.new(:index, name, nil, @top.to_directory, info, path[-2])
259
262
  end
260
263
 
261
264
  def load_file(name, locale, info)
@@ -0,0 +1,76 @@
1
+ # Utopia::Controller::Actions
2
+
3
+ Actions let you match path patterns in your controller and execute code. In your `controller.rb` simply add:
4
+
5
+ ```ruby
6
+ prepend Actions
7
+ ```
8
+
9
+ If you are adding multiple things, like rewriting, they should come earlier in the chain, e.g:
10
+
11
+ ```ruby
12
+ prepend Rewrite, Actions
13
+ ```
14
+
15
+ A simple CRUD controller might look like:
16
+
17
+ ```ruby
18
+ prepend Actions
19
+
20
+ on 'index' do
21
+ @users = User.all
22
+ end
23
+
24
+ on 'new' do |request|
25
+ @user = User.new
26
+
27
+ if request.post?
28
+ @user.update_attributes(request.params['user'])
29
+
30
+ redirect! "index"
31
+ end
32
+ end
33
+
34
+ on 'edit' do |request|
35
+ @user = User.find(request.params['id'])
36
+
37
+ if request.post?
38
+ @user.update_attributes(request.params['user'])
39
+
40
+ redirect! "index"
41
+ end
42
+ end
43
+
44
+ on 'delete' do |request|
45
+ User.find(request.params['id']).destroy
46
+
47
+ redirect! "index"
48
+ end
49
+ ```
50
+
51
+ ## Path Matching
52
+
53
+ Path matching works from right to left, and `'**'` is a greedy operator. Controllers are invoked with a path relative to the controller's `URI_PATH`, so all lookups are relative to the controller.
54
+
55
+ <dl>
56
+ <dt><code class="language-ruby">"*"</code></dt>
57
+ <dd>Match a single path element</dd>
58
+ <dt><code class="language-ruby">"**"</code></dt>
59
+ <dd>Match all remaining path elements</dd>
60
+ <dt><code class="language-ruby">String</code></dt>
61
+ <dd>Match a named path component, e.g. <code class="language-ruby">"edit"</code>.</dd>
62
+ <dt><code class="language-ruby">Symbol</code></dt>
63
+ <dd>Equivalent to <code class="language-ruby">["**", symbol.to_s]</code>, e.g. <code class="language-ruby">:logout</code>.</dd>
64
+ </dl>
65
+
66
+ ## Otherwise Matching
67
+
68
+ If no action was matched, it is sometimes useful to perform some specific behaviour. You can specify this by using the otherwise handler:
69
+
70
+ ```ruby
71
+ otherwise do |request, path|
72
+ fail! :teapot
73
+ end
74
+ ```
75
+
76
+ If you are doing this to perform some kind of rewriting, it may be preferable to use the [Rewrite](../rewrite/) controller layer.
@@ -0,0 +1,69 @@
1
+ # Utopia::Controller::Rewrite
2
+
3
+ This module can match and rewrite requests before they processed. This allows you to handle URLs like `/post/15/view` or `/blog/123-pictures-of-my-cat` easily. The basic rewrite operation is to extract some part of the path and optionally executes a block. That means that the path is modified before being passed on to the next layer in the controller, and controller instance variables may be set.
4
+
5
+ ## Regular Expressions
6
+
7
+ In your `controller.rb`:
8
+
9
+ ```ruby
10
+ prepend Rewrite, Actions
11
+
12
+ rewrite.extract_prefix permalink: /(?<id>\d+)-(?<title>.*)/ do |request, path, match|
13
+ # The rewrite matched, but there was no valid post, so we fail:
14
+ fail! unless @post = Post.find(@permalink[:id])
15
+
16
+ # If the path matched, but there was no suffix, we make it default to the post action:
17
+ if match.post_match.empty?
18
+ match.post_match.components << "post"
19
+ end
20
+ end
21
+
22
+ on 'post' do
23
+ # You can do further processing here.
24
+ fail! unless @post.published?
25
+
26
+ @comments = @post.comments.first(5)
27
+ end
28
+
29
+ on 'edit' do
30
+ # You can do further processing here.
31
+ fail! unless @current_user&.editor?
32
+ end
33
+ ```
34
+
35
+ In your `post.xnode`, as an example:
36
+
37
+ ```trenni
38
+ <content:page>
39
+ <content:heading>Post #{attributes[:permalink][:id]} about #{attributes[:permalink][:title]}</content:heading>
40
+
41
+ <p>#{attributes[:post].content}</p>
42
+ </content:page>
43
+ ```
44
+
45
+ Keep in mind, that URLs like `/123-pictures-of-my-cat/edit` will work as expected, and hit the `edit` action of the controller.
46
+
47
+ ## Restful Resources
48
+
49
+ Similar to the above, if we were solely interested in IDs, we could do the following:
50
+
51
+ ```ruby
52
+ prepend Rewrite, Actions
53
+
54
+ rewrite.extract_prefix post_id: Integer do |request, path, match|
55
+ # The rewrite matched, but there was no valid post, so we fail:
56
+ fail! unless @post = Post.find(@post_id)
57
+
58
+ # If the path matched, but there was no suffix, we make it default to the post action:
59
+ if match.post_match.empty?
60
+ match.post_match.components << "post"
61
+ end
62
+ end
63
+ ```
64
+
65
+ This will only match complete integers. Assuming this code is in `/blog/controller.rb`, it would match something like `/blog/123/view` and assign <code class="language-ruby">Integer("123")</code> to <code class="language-ruby">@post_id</code>.
66
+
67
+ ### Matching.. other things
68
+
69
+ It's possible to match using <code class="language-ruby">Integer</code>, <code class="language-ruby">Float</code>, <code class="language-ruby">String</code>, and you can provide your own class which will be instantiated. If it doesn't match, raise an exception and the rewrite rule will fail.
@@ -155,7 +155,7 @@ module Utopia
155
155
  end
156
156
 
157
157
  if @dump_environment
158
- mail.attachments['environment.yaml'] = YAML::dump(env)
158
+ mail.attachments['environment.yaml'] = YAML.dump(env)
159
159
  end
160
160
 
161
161
  return mail
@@ -140,7 +140,7 @@ module Utopia
140
140
  if directory?
141
141
  return self
142
142
  else
143
- return join([''])
143
+ return self.class.new(@components + [''])
144
144
  end
145
145
  end
146
146
 
@@ -178,8 +178,14 @@ module Utopia
178
178
  @components
179
179
  end
180
180
 
181
+ # @parameter other [Array(String)] The path components to append.
181
182
  def join(other)
182
- self.class.new(@components + other).simplify
183
+ # Check whether other is an absolute path:
184
+ if other.first == ''
185
+ self.class.new(other)
186
+ else
187
+ self.class.new(@components + other).simplify
188
+ end
183
189
  end
184
190
 
185
191
  def expand(root)
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module Utopia
24
- VERSION = "2.17.1"
24
+ VERSION = "2.18.4"
25
25
  end
@@ -6,11 +6,11 @@ Welcome to Utopia, a Ruby framework for web site and application development. Fo
6
6
 
7
7
  To start the development server, simply execute
8
8
 
9
- > rake
9
+ > bake
10
10
  Generating transient session key for development...
11
11
  20:57:36 - INFO - Starting Falcon HTTP server on localhost:9292
12
12
  20:57:36 - INFO - Guard::RSpec is running
13
13
  20:57:36 - INFO - Guard is now watching at '...'
14
14
  [1] guard(main)>
15
15
 
16
- Then browse http://localhost:9292 (or as specified) to see your new site.
16
+ Then browse https://localhost:9292 (or as specified) to see your new site.
@@ -14,6 +14,7 @@ else
14
14
  use Rack::ShowExceptions unless UTOPIA.testing?
15
15
  end
16
16
 
17
+ # serve static files from public/
17
18
  use Utopia::Static, root: 'public'
18
19
 
19
20
  use Utopia::Redirection::Rewrite, {
@@ -39,6 +40,7 @@ use Utopia::Session,
39
40
 
40
41
  use Utopia::Controller
41
42
 
43
+ # serve static files from pages/
42
44
  use Utopia::Static
43
45
 
44
46
  # Serve dynamic content
@@ -14,7 +14,7 @@
14
14
 
15
15
  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous" />
16
16
 
17
- <link rel="icon" type="image/png" href="/_static/icon.png" />
17
+ <link rel="icon" type="image/png" href="/_static/icon.svg" />
18
18
  <link rel="stylesheet" href="/_static/site.css" type="text/css" media="screen" />
19
19
  </head>
20
20
 
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="100%" height="100%" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:square;stroke-miterlimit:1.5;">
3
+ <g transform="matrix(0.922789,0,0,0.922789,16.591,0.837867)">
4
+ <path d="M120.731,31.594L212.702,84.694L212.702,190.893L120.731,243.993L28.759,190.893L28.759,84.694L120.731,31.594Z" style="fill:none;"/>
5
+ <clipPath id="_clip1">
6
+ <path d="M120.731,31.594L212.702,84.694L212.702,190.893L120.731,243.993L28.759,190.893L28.759,84.694L120.731,31.594Z"/>
7
+ </clipPath>
8
+ <g clip-path="url(#_clip1)">
9
+ <g transform="matrix(18.3943,0,0,10.62,-1929.57,-966.601)">
10
+ <g transform="matrix(1,0,0,0.178571,106.463,93.9922)">
11
+ <rect x="0" y="0" width="10" height="56" style="fill:#f79433;"/>
12
+ </g>
13
+ <g transform="matrix(1,0,0,0.416667,106.463,80.6588)">
14
+ <rect x="0" y="56" width="10" height="24" style="fill:#4e8dd8;"/>
15
+ </g>
16
+ </g>
17
+ </g>
18
+ <path d="M120.731,31.594L212.702,84.694L212.702,190.893L120.731,243.993L28.759,190.893L28.759,84.694L120.731,31.594Z" style="fill:none;stroke:black;stroke-width:26.01px;"/>
19
+ </g>
20
+ </svg>
@@ -1 +1,11 @@
1
- <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 10 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect x="0" y="0" width="10" height="56" style="fill:#f79433;"/><rect x="0" y="56" width="10" height="24" style="fill:#4e8dd8;"/></svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <svg
3
+ width="100%" height="100%"
4
+ viewBox="0 0 10 80"
5
+ preserveAspectRatio="none"
6
+ version="1.1"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:xlink= "http://www.w3.org/1999/xlink">
9
+ <rect x="0" y="0" width="10" height="56" style="fill:#f79433;"/>
10
+ <rect x="0" y="56" width="10" height="24" style="fill:#4e8dd8;"/>
11
+ </svg>
@@ -1 +1,19 @@
1
- <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 420 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g><rect x="0" y="0" width="420" height="56" style="fill:#f79433;"/><rect x="0" y="56" width="420" height="24" style="fill:#4e8dd8;"/><g><path d="M75.145,70.819c2.37,-3.097 4.173,-6.921 5.111,-11.365c0.91,-4.318 1.498,-9.261 1.498,-14.692l0,-44.762l-62.754,0l0,44.762c0,2.628 0.244,5.333 0.407,8.035c0.168,2.782 0.674,5.515 1.345,8.118c0.68,2.644 1.739,5.173 3.067,7.517c1.363,2.405 3.263,4.526 5.609,6.303c2.319,1.755 5.245,3.163 8.677,4.172c1.617,0.478 3.416,1.093 5.354,1.093l13.856,0c3.071,0 5.797,-1.058 8.131,-2.001c4.042,-1.631 7.305,-4.049 9.699,-7.18Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M151.481,18.701l0,-18.701l-62.754,-0.022l0,18.723l22.246,0l0.02,61.299l17.93,0l-0.02,-61.299l22.578,0Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M229.926,39.999c0,-22.051 -16.979,-39.992 -37.852,-39.992c-20.872,0 -37.851,17.942 -37.851,39.992c0,22.054 16.979,39.994 37.851,39.994c20.873,0 37.852,-17.94 37.852,-39.994Z" style="fill:#fff;fill-rule:nonzero;"/><path d="M269.238,50.909c9.717,0 17.181,-2.066 22.183,-6.395c5.087,-4.399 7.667,-10.942 7.667,-19.575c0,-3.257 -0.393,-5.962 -1.167,-8.476c-0.778,-2.528 -1.883,-4.934 -3.281,-6.814c-1.401,-1.882 -3.098,-3.458 -5.045,-4.703c-1.895,-1.21 -4.003,-2.198 -6.264,-2.943c-2.239,-0.737 -4.64,-1.263 -7.139,-1.56c-2.464,-0.292 -5.016,-0.443 -7.587,-0.443l-29.468,0l0,80l17.93,0l0,-29.091l12.171,0Z" style="fill:#fff;fill-rule:nonzero;"/><rect x="304.879" y="0" width="17.93" height="80" style="fill:#fff;"/><path d="M362.589,0l-29.477,80l75.888,0l-31.247,-80l-15.164,0Z" style="fill:#fff;fill-rule:nonzero;"/></g></g></svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <svg
3
+ width="100%" height="100%"
4
+ viewBox="0 0 420 80"
5
+ preserveAspectRatio="none"
6
+ version="1.1"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:xlink= "http://www.w3.org/1999/xlink">
9
+ <rect x="0" y="0" width="420" height="56" style="fill:#f79433;"/>
10
+ <rect x="0" y="56" width="420" height="24" style="fill:#4e8dd8;"/>
11
+ <g>
12
+ <path d="M75.145,70.819c2.37,-3.097 4.173,-6.921 5.111,-11.365c0.91,-4.318 1.498,-9.261 1.498,-14.692l0,-44.762l-62.754,0l0,44.762c0,2.628 0.244,5.333 0.407,8.035c0.168,2.782 0.674,5.515 1.345,8.118c0.68,2.644 1.739,5.173 3.067,7.517c1.363,2.405 3.263,4.526 5.609,6.303c2.319,1.755 5.245,3.163 8.677,4.172c1.617,0.478 3.416,1.093 5.354,1.093l13.856,0c3.071,0 5.797,-1.058 8.131,-2.001c4.042,-1.631 7.305,-4.049 9.699,-7.18Z" style="fill:#fff;fill-rule:nonzero;"/>
13
+ <path d="M151.481,18.701l0,-18.701l-62.754,-0.022l0,18.723l22.246,0l0.02,61.299l17.93,0l-0.02,-61.299l22.578,0Z" style="fill:#fff;fill-rule:nonzero;"/>
14
+ <path d="M229.926,39.999c0,-22.051 -16.979,-39.992 -37.852,-39.992c-20.872,0 -37.851,17.942 -37.851,39.992c0,22.054 16.979,39.994 37.851,39.994c20.873,0 37.852,-17.94 37.852,-39.994Z" style="fill:#fff;fill-rule:nonzero;"/>
15
+ <path d="M269.238,50.909c9.717,0 17.181,-2.066 22.183,-6.395c5.087,-4.399 7.667,-10.942 7.667,-19.575c0,-3.257 -0.393,-5.962 -1.167,-8.476c-0.778,-2.528 -1.883,-4.934 -3.281,-6.814c-1.401,-1.882 -3.098,-3.458 -5.045,-4.703c-1.895,-1.21 -4.003,-2.198 -6.264,-2.943c-2.239,-0.737 -4.64,-1.263 -7.139,-1.56c-2.464,-0.292 -5.016,-0.443 -7.587,-0.443l-29.468,0l0,80l17.93,0l0,-29.091l12.171,0Z" style="fill:#fff;fill-rule:nonzero;"/>
16
+ <path d="M362.589,0l-29.477,80l75.888,0l-31.247,-80l-15.164,0Z" style="fill:#fff;fill-rule:nonzero;"/>
17
+ <rect x="304.879" y="0" width="17.93" height="80" style="fill:#fff;"/>
18
+ </g>
19
+ </svg>
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: 2.17.1
4
+ version: 2.18.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2020-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -192,34 +192,6 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: bake-bundler
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: bake-modernize
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
195
  - !ruby/object:Gem::Dependency
224
196
  name: bundler
225
197
  requirement: !ruby/object:Gem::Requirement
@@ -276,20 +248,6 @@ dependencies:
276
248
  - - "~>"
277
249
  - !ruby/object:Gem::Version
278
250
  version: '3.6'
279
- - !ruby/object:Gem::Dependency
280
- name: utopia-project
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - ">="
284
- - !ruby/object:Gem::Version
285
- version: '0'
286
- type: :development
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - ">="
291
- - !ruby/object:Gem::Version
292
- version: '0'
293
251
  description:
294
252
  email:
295
253
  executables:
@@ -319,9 +277,11 @@ files:
319
277
  - lib/utopia/content/tags.rb
320
278
  - lib/utopia/content_length.rb
321
279
  - lib/utopia/controller.rb
280
+ - lib/utopia/controller/actions.md
322
281
  - lib/utopia/controller/actions.rb
323
282
  - lib/utopia/controller/base.rb
324
283
  - lib/utopia/controller/respond.rb
284
+ - lib/utopia/controller/rewrite.md
325
285
  - lib/utopia/controller/rewrite.rb
326
286
  - lib/utopia/controller/variables.rb
327
287
  - lib/utopia/exceptions.rb
@@ -365,7 +325,7 @@ files:
365
325
  - setup/site/pages/errors/file-not-found.xnode
366
326
  - setup/site/pages/links.yaml
367
327
  - setup/site/pages/welcome/index.xnode
368
- - setup/site/public/_static/icon.png
328
+ - setup/site/public/_static/icon.svg
369
329
  - setup/site/public/_static/site.css
370
330
  - setup/site/public/_static/utopia-background.svg
371
331
  - setup/site/public/_static/utopia.svg
@@ -384,7 +344,7 @@ require_paths:
384
344
  - lib
385
345
  required_ruby_version: !ruby/object:Gem::Requirement
386
346
  requirements:
387
- - - "~>"
347
+ - - ">="
388
348
  - !ruby/object:Gem::Version
389
349
  version: '2.5'
390
350
  required_rubygems_version: !ruby/object:Gem::Requirement