nesta 0.9.10 → 0.9.11

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.
data/CHANGES CHANGED
@@ -1,3 +1,30 @@
1
+ = 0.9.11 / (22 September 2011)
2
+
3
+ * Use Tilt to render the Markdown, Textile and Haml in content/pages.
4
+ RDiscount is now the default Markdown processor. To continue using
5
+ Maruku add it to Gemfile and call `Tilt.prefer Tilt::MarukuTemplate`
6
+ in your app.rb file.
7
+
8
+ * Remove trailing slashes from all URLs, redirecting to the URL without
9
+ the slash. See ticket #60 on GitHub.
10
+
11
+ * Added the 'Articles heading' metadata key. When articles are listed
12
+ on a category page, Nesta adds a heading above the articles based on
13
+ the category's title (e.g. "Articles on Thing"). If you set the
14
+ 'Articles heading' metadata Nesta will allow you to override the
15
+ entire heading for a given page.
16
+
17
+ * Bug fix: require nesta/plugin automatically on load. The
18
+ Nesta::Plugin.register method is called by plugins as soon as they
19
+ are loaded, so we need to make it available. In 0.9.10 this method
20
+ wasn't available until too late.
21
+
22
+ * Bug fix: Minor updates to the files generated by `nesta plugin:create`.
23
+
24
+ * Bug fix: Don't allow retrieval of the contents of any file
25
+ within the content folder by crafting a relative path containing
26
+ the string '../' (Louis Nyffenegger).
27
+
1
28
  = 0.9.10 / (9 September 2011)
2
29
 
3
30
  * Load Nesta plugins from gems. Any gem whose name begins with
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nesta (0.9.10)
4
+ nesta (0.9.11)
5
5
  RedCloth (~> 4.2)
6
6
  haml (~> 3.1)
7
- maruku (>= 0.6.0)
7
+ rdiscount (~> 1.6)
8
8
  sass (~> 3.1)
9
9
  shotgun (>= 0.8)
10
10
  sinatra (= 1.2.6)
@@ -13,16 +13,15 @@ GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
15
  RedCloth (4.2.8)
16
- haml (3.1.2)
16
+ haml (3.1.3)
17
17
  hoe (2.12.2)
18
18
  rake (~> 0.8)
19
19
  hpricot (0.8.4)
20
- maruku (0.6.0)
21
- syntax (>= 1.0.0)
22
20
  rack (1.3.2)
23
21
  rack-test (0.6.1)
24
22
  rack (>= 1.0)
25
23
  rake (0.9.2)
24
+ rdiscount (1.6.8)
26
25
  rspec (1.3.0)
27
26
  rspec_hpricot_matchers (1.0)
28
27
  sass (3.1.7)
@@ -31,7 +30,6 @@ GEM
31
30
  sinatra (1.2.6)
32
31
  rack (~> 1.1)
33
32
  tilt (< 2.0, >= 1.2.2)
34
- syntax (1.0.0)
35
33
  test-unit (1.2.3)
36
34
  hoe (>= 1.5.1)
37
35
  tilt (1.3.3)
@@ -0,0 +1 @@
1
+ require "nesta/plugin"
@@ -100,6 +100,16 @@ module Nesta
100
100
  def article_summaries(articles)
101
101
  haml(:summaries, :layout => false, :locals => { :pages => articles })
102
102
  end
103
+
104
+ def articles_heading
105
+ @page.metadata('articles heading') || "Articles on #{@page.heading}"
106
+ end
107
+ end
108
+
109
+ before do
110
+ if request.path =~ Regexp.new('./$')
111
+ redirect to(request.path.sub(Regexp.new('/$'), ''))
112
+ end
103
113
  end
104
114
 
105
115
  not_found do
@@ -128,9 +138,13 @@ module Nesta
128
138
  cache stylesheet(params[:sheet].to_sym)
129
139
  end
130
140
 
131
- get %r{/attachments/([\w/.-]+)} do
141
+ get %r{/attachments/([\w/.-]+)} do |file|
132
142
  file = File.join(Nesta::Config.attachment_path, params[:captures].first)
133
- send_file(file, :disposition => nil)
143
+ if file =~ /\.\.\//
144
+ not_found
145
+ else
146
+ send_file(file, :disposition => nil)
147
+ end
134
148
  end
135
149
 
136
150
  get '/articles.xml' do
@@ -166,9 +166,7 @@ module Nesta
166
166
  module Plugin
167
167
  module #{module_name}
168
168
  module Helpers
169
- helpers do
170
- # If your plugin needs any helper methods, add them here...
171
- end
169
+ # If your plugin needs any helper methods, add them here...
172
170
  end
173
171
  end
174
172
  end
@@ -182,13 +180,19 @@ end
182
180
  end
183
181
 
184
182
  def specify_gem_dependency
185
- File.open(File.join(@gem_name, "#{@gem_name}.gemspec"), 'r+') do |file|
183
+ gemspec = File.join(@gem_name, "#{@gem_name}.gemspec")
184
+ File.open(gemspec, 'r+') do |file|
185
+ output = ''
186
186
  file.each_line do |line|
187
- if line =~ /specify any dependencies here/
188
- file.puts(' s.add_dependency("nesta", ">= 0.9.10")')
189
- file.puts(' s.add_development_dependency("rake")')
187
+ if line =~ /^end/
188
+ output << ' s.add_dependency("nesta", ">= 0.9.11")' + "\n"
189
+ output << ' s.add_development_dependency("rake")' + "\n"
190
190
  end
191
+ output << line
191
192
  end
193
+ file.pos = 0
194
+ file.print(output)
195
+ file.truncate(file.pos)
192
196
  end
193
197
  end
194
198
 
@@ -1,8 +1,10 @@
1
- require "time"
1
+ require 'time'
2
2
 
3
- require "rubygems"
4
- require "maruku"
5
- require "redcloth"
3
+ Tilt.register Tilt::MarukuTemplate, 'mdown'
4
+ Tilt.register Tilt::KramdownTemplate, 'mdown'
5
+ Tilt.register Tilt::BlueClothTemplate, 'mdown'
6
+ Tilt.register Tilt::RDiscountTemplate, 'mdown'
7
+ Tilt.register Tilt::RedcarpetTemplate, 'mdown'
6
8
 
7
9
  module Nesta
8
10
  class FileModel
@@ -11,6 +13,12 @@ module Nesta
11
13
 
12
14
  attr_reader :filename, :mtime
13
15
 
16
+ class CaseInsensitiveHash < Hash
17
+ def [](key)
18
+ super(key.to_s.downcase)
19
+ end
20
+ end
21
+
14
22
  def self.model_path(basename = nil)
15
23
  Nesta::Config.content_path(basename)
16
24
  end
@@ -51,7 +59,7 @@ module Nesta
51
59
 
52
60
  def initialize(filename)
53
61
  @filename = filename
54
- @format = filename.split(".").last.to_sym
62
+ @format = filename.split('.').last.to_sym
55
63
  if File.zero?(filename)
56
64
  @metadata = {}
57
65
  @markup = ''
@@ -83,11 +91,11 @@ module Nesta
83
91
  end
84
92
 
85
93
  def layout
86
- (metadata("layout") || "layout").to_sym
94
+ (metadata('layout') || 'layout').to_sym
87
95
  end
88
96
 
89
97
  def template
90
- (metadata("template") || "page").to_sym
98
+ (metadata('template') || 'page').to_sym
91
99
  end
92
100
 
93
101
  def to_html(scope = nil)
@@ -99,11 +107,11 @@ module Nesta
99
107
  end
100
108
 
101
109
  def description
102
- metadata("description")
110
+ metadata('description')
103
111
  end
104
112
 
105
113
  def keywords
106
- metadata("keywords")
114
+ metadata('keywords')
107
115
  end
108
116
 
109
117
  def metadata(key)
@@ -111,8 +119,8 @@ module Nesta
111
119
  end
112
120
 
113
121
  def flagged_as?(flag)
114
- flags = metadata("flags")
115
- flags && flags.split(",").map { |name| name.strip }.include?(flag)
122
+ flags = metadata('flags')
123
+ flags && flags.split(',').map { |name| name.strip }.include?(flag)
116
124
  end
117
125
 
118
126
  private
@@ -130,7 +138,7 @@ module Nesta
130
138
  raise Sinatra::NotFound
131
139
  else
132
140
  first_paragraph, remaining = contents.split(/\r?\n\r?\n/, 2)
133
- metadata = {}
141
+ metadata = CaseInsensitiveHash.new
134
142
  if metadata?(first_paragraph)
135
143
  first_paragraph.split("\n").each do |line|
136
144
  key, value = line.split(/\s*:\s*/, 2)
@@ -142,14 +150,8 @@ module Nesta
142
150
  end
143
151
 
144
152
  def convert_to_html(format, scope, text)
145
- case format
146
- when :mdown
147
- Maruku.new(text).to_html
148
- when :haml
149
- Haml::Engine.new(text).to_html(scope)
150
- when :textile
151
- RedCloth.new(text).to_html
152
- end
153
+ template = Tilt[format].new { text }
154
+ template.render(scope)
153
155
  end
154
156
  end
155
157
 
@@ -231,23 +233,18 @@ module Nesta
231
233
  def summary
232
234
  if summary_text = metadata("summary")
233
235
  summary_text.gsub!('\n', "\n")
234
- case @format
235
- when :textile
236
- RedCloth.new(summary_text).to_html
237
- else
238
- Maruku.new(summary_text).to_html
239
- end
236
+ convert_to_html(@format, nil, summary_text)
240
237
  end
241
238
  end
242
239
 
243
240
  def body(scope = nil)
244
241
  body_text = case @format
245
242
  when :mdown
246
- markup.sub(/^#[^#].*$\r?\n(\r?\n)?/, "")
243
+ markup.sub(/^#[^#].*$\r?\n(\r?\n)?/, '')
247
244
  when :haml
248
- markup.sub(/^\s*%h1\s+.*$\r?\n(\r?\n)?/, "")
245
+ markup.sub(/^\s*%h1\s+.*$\r?\n(\r?\n)?/, '')
249
246
  when :textile
250
- markup.sub(/^\s*h1\.\s+.*$\r?\n(\r?\n)?/, "")
247
+ markup.sub(/^\s*h1\.\s+.*$\r?\n(\r?\n)?/, '')
251
248
  end
252
249
  convert_to_html(@format, scope, body_text)
253
250
  end
@@ -1,3 +1,3 @@
1
1
  module Nesta
2
- VERSION = '0.9.10'
2
+ VERSION = '0.9.11'
3
3
  end
@@ -33,7 +33,7 @@ EOF
33
33
 
34
34
  s.add_dependency('haml', '~> 3.1')
35
35
  s.add_dependency('sass', '~> 3.1')
36
- s.add_dependency('maruku', '>= 0.6.0')
36
+ s.add_dependency('rdiscount', '~> 1.6')
37
37
  s.add_dependency('RedCloth', '~> 4.2')
38
38
  s.add_dependency('sinatra', '1.2.6')
39
39
 
@@ -100,7 +100,8 @@ describe "atom feed" do
100
100
  end
101
101
 
102
102
  it "should include hostname in URLs" do
103
- body.should have_tag("entry/content", /href='http:\/\/example.org\/foo/)
103
+ body.should have_tag("entry/content",
104
+ Regexp.new('href=.+http:\/\/example.org\/foo'))
104
105
  end
105
106
 
106
107
  it "should not include article heading in content" do
@@ -207,6 +207,7 @@ describe "nesta" do
207
207
  @init_file = create_gem_file('lib', @gem_name, 'init.rb')
208
208
  @gem_spec = create_gem_file("#{@gem_name}.gemspec") do |file|
209
209
  file.puts " # specify any dependencies here; for example:"
210
+ file.puts "end"
210
211
  end
211
212
  end
212
213
 
@@ -226,7 +227,6 @@ describe "nesta" do
226
227
  boilerplate = <<-EOF
227
228
  module My::Feature
228
229
  module Helpers
229
- helpers do
230
230
  EOF
231
231
  init.should include(boilerplate)
232
232
  init.should include('helpers Nesta::Plugin::My::Feature::Helpers')
@@ -235,7 +235,7 @@ describe "nesta" do
235
235
  it "should specify plugin gem's dependencies" do
236
236
  @command.execute
237
237
  text = File.read(@gem_spec)
238
- text.should include('s.add_dependency("nesta", ">= 0.9.10")')
238
+ text.should include('s.add_dependency("nesta", ">= 0.9.11")')
239
239
  text.should include('s.add_development_dependency("rake")')
240
240
  end
241
241
  end
@@ -311,7 +311,7 @@ describe "Page", :shared => true do
311
311
  file = File.open(path, 'w')
312
312
  file.close
313
313
  end
314
- Nesta::Page.find_all.first.to_html.should == ''
314
+ Nesta::Page.find_all.first.to_html.should match(/^\s*$/)
315
315
  end
316
316
  end
317
317
 
@@ -288,19 +288,21 @@ describe "A page" do
288
288
  last_response.should_not be_ok
289
289
  end
290
290
  end
291
-
291
+
292
292
  describe "that has meta data" do
293
293
  before(:each) do
294
294
  @title = 'Different title'
295
295
  @content = "Page content"
296
296
  @description = "Page about stuff"
297
297
  @keywords = "things, stuff"
298
+ @articles_heading = "Posts about this stuff"
298
299
  @category = create_category(
299
300
  :content => "# My category\n\n#{@content}",
300
301
  :metadata => {
301
302
  'title' => @title,
302
303
  'description' => @description,
303
- 'keywords' => @keywords
304
+ 'keywords' => @keywords,
305
+ 'articles heading' => @articles_heading
304
306
  }
305
307
  )
306
308
  end
@@ -308,11 +310,18 @@ describe "A page" do
308
310
  it_should_behave_like "page with keyword and description"
309
311
  it_should_behave_like "page that can display menus"
310
312
 
313
+ describe "whose URL ends in /" do
314
+ it "should be redirected, removing the slash" do
315
+ get @category.abspath + '/'
316
+ last_response.should be_redirect
317
+ end
318
+ end
319
+
311
320
  it "should render successfully" do
312
321
  do_get
313
322
  last_response.should be_ok
314
323
  end
315
-
324
+
316
325
  it "should display the heading" do
317
326
  do_get
318
327
  body.should have_tag('h1', @category.heading)
@@ -371,6 +380,11 @@ describe "A page" do
371
380
  "h1 a[@href='#{@article.abspath}']", /^\s*#{@article.heading}$/)
372
381
  body.should_not have_tag("h3", @article2.heading)
373
382
  end
383
+
384
+ it "should display the article heading" do
385
+ do_get
386
+ body.should have_tag('h1', @articles_heading)
387
+ end
374
388
  end
375
389
 
376
390
  it "should not include Disqus comments by default" do
@@ -438,32 +452,47 @@ describe "attachments" do
438
452
  include ModelFactory
439
453
  include RequestSpecHelper
440
454
 
441
- def create_attachment
455
+ before(:each) do
442
456
  stub_configuration
443
457
  create_content_directories
444
- path = File.join(Nesta::Config.attachment_path, "test.txt")
445
- File.open(path, "w") { |file| file.write("I'm a test attachment") }
446
458
  end
447
-
448
- before(:each) do
449
- create_attachment
450
- get "/attachments/test.txt"
451
- end
452
-
459
+
453
460
  after(:each) do
454
461
  remove_temp_directory
455
462
  Nesta::FileModel.purge_cache
456
463
  end
457
-
458
- it "should be served successfully" do
459
- last_response.should be_ok
460
- end
461
-
462
- it "should be sent to the client" do
463
- body.should include("I'm a test attachment")
464
+
465
+ describe "in the attachments folder" do
466
+ before(:each) do
467
+ path = File.join(Nesta::Config.attachment_path, 'test.txt')
468
+ File.open(path, 'w') { |file| file.write("I'm a test attachment") }
469
+ end
470
+
471
+ it "should be served successfully" do
472
+ get "/attachments/test.txt"
473
+ last_response.should be_ok
474
+ end
475
+
476
+ it "should be sent to the client" do
477
+ get "/attachments/test.txt"
478
+ body.should include("I'm a test attachment")
479
+ end
480
+
481
+ it "should set the appropriate MIME type" do
482
+ get "/attachments/test.txt"
483
+ last_response.headers["Content-Type"].should =~ Regexp.new("^text/plain")
484
+ end
464
485
  end
465
-
466
- it "should set the appropriate MIME type" do
467
- last_response.headers["Content-Type"].should =~ Regexp.new("^text/plain")
486
+
487
+ describe "outside the attachments folder" do
488
+ before(:each) do
489
+ path = File.join(Nesta::Config.page_path, 'index.haml')
490
+ File.open(path, 'w') { |file| file.write('%h1 Test page') }
491
+ end
492
+
493
+ it "should be directory traversal free" do
494
+ get '/attachments/../pages/index.haml'
495
+ last_response.should_not be_ok
496
+ end
468
497
  end
469
498
  end
@@ -11,7 +11,7 @@
11
11
  - unless @page.articles.empty?
12
12
  %section.articles
13
13
  %header
14
- %h1= "Articles on #{@page.heading}"
14
+ %h1= articles_heading
15
15
  = article_summaries(@page.articles)
16
16
 
17
17
  = haml :page_meta, :layout => false, :locals => { :page => @page }
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nesta
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 45
4
5
  prerelease:
5
- version: 0.9.10
6
+ segments:
7
+ - 0
8
+ - 9
9
+ - 11
10
+ version: 0.9.11
6
11
  platform: ruby
7
12
  authors:
8
13
  - Graham Ashton
@@ -10,130 +15,179 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-09-09 00:00:00 +01:00
18
+ date: 2011-09-22 00:00:00 +01:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
- name: haml
18
22
  requirement: &id001 !ruby/object:Gem::Requirement
19
23
  none: false
20
24
  requirements:
21
25
  - - ~>
22
26
  - !ruby/object:Gem::Version
27
+ hash: 5
28
+ segments:
29
+ - 3
30
+ - 1
23
31
  version: "3.1"
24
- type: :runtime
25
- prerelease: false
26
32
  version_requirements: *id001
33
+ name: haml
34
+ prerelease: false
35
+ type: :runtime
27
36
  - !ruby/object:Gem::Dependency
28
- name: sass
29
37
  requirement: &id002 !ruby/object:Gem::Requirement
30
38
  none: false
31
39
  requirements:
32
40
  - - ~>
33
41
  - !ruby/object:Gem::Version
42
+ hash: 5
43
+ segments:
44
+ - 3
45
+ - 1
34
46
  version: "3.1"
35
- type: :runtime
36
- prerelease: false
37
47
  version_requirements: *id002
48
+ name: sass
49
+ prerelease: false
50
+ type: :runtime
38
51
  - !ruby/object:Gem::Dependency
39
- name: maruku
40
52
  requirement: &id003 !ruby/object:Gem::Requirement
41
53
  none: false
42
54
  requirements:
43
- - - ">="
55
+ - - ~>
44
56
  - !ruby/object:Gem::Version
45
- version: 0.6.0
46
- type: :runtime
47
- prerelease: false
57
+ hash: 3
58
+ segments:
59
+ - 1
60
+ - 6
61
+ version: "1.6"
48
62
  version_requirements: *id003
63
+ name: rdiscount
64
+ prerelease: false
65
+ type: :runtime
49
66
  - !ruby/object:Gem::Dependency
50
- name: RedCloth
51
67
  requirement: &id004 !ruby/object:Gem::Requirement
52
68
  none: false
53
69
  requirements:
54
70
  - - ~>
55
71
  - !ruby/object:Gem::Version
72
+ hash: 31
73
+ segments:
74
+ - 4
75
+ - 2
56
76
  version: "4.2"
57
- type: :runtime
58
- prerelease: false
59
77
  version_requirements: *id004
78
+ name: RedCloth
79
+ prerelease: false
80
+ type: :runtime
60
81
  - !ruby/object:Gem::Dependency
61
- name: sinatra
62
82
  requirement: &id005 !ruby/object:Gem::Requirement
63
83
  none: false
64
84
  requirements:
65
85
  - - "="
66
86
  - !ruby/object:Gem::Version
87
+ hash: 19
88
+ segments:
89
+ - 1
90
+ - 2
91
+ - 6
67
92
  version: 1.2.6
68
- type: :runtime
69
- prerelease: false
70
93
  version_requirements: *id005
94
+ name: sinatra
95
+ prerelease: false
96
+ type: :runtime
71
97
  - !ruby/object:Gem::Dependency
72
- name: shotgun
73
98
  requirement: &id006 !ruby/object:Gem::Requirement
74
99
  none: false
75
100
  requirements:
76
101
  - - ">="
77
102
  - !ruby/object:Gem::Version
103
+ hash: 27
104
+ segments:
105
+ - 0
106
+ - 8
78
107
  version: "0.8"
79
- type: :runtime
80
- prerelease: false
81
108
  version_requirements: *id006
109
+ name: shotgun
110
+ prerelease: false
111
+ type: :runtime
82
112
  - !ruby/object:Gem::Dependency
83
- name: hpricot
84
113
  requirement: &id007 !ruby/object:Gem::Requirement
85
114
  none: false
86
115
  requirements:
87
116
  - - "="
88
117
  - !ruby/object:Gem::Version
118
+ hash: 55
119
+ segments:
120
+ - 0
121
+ - 8
122
+ - 4
89
123
  version: 0.8.4
90
- type: :development
91
- prerelease: false
92
124
  version_requirements: *id007
125
+ name: hpricot
126
+ prerelease: false
127
+ type: :development
93
128
  - !ruby/object:Gem::Dependency
94
- name: rack-test
95
129
  requirement: &id008 !ruby/object:Gem::Requirement
96
130
  none: false
97
131
  requirements:
98
132
  - - "="
99
133
  - !ruby/object:Gem::Version
134
+ hash: 5
135
+ segments:
136
+ - 0
137
+ - 6
138
+ - 1
100
139
  version: 0.6.1
101
- type: :development
102
- prerelease: false
103
140
  version_requirements: *id008
141
+ name: rack-test
142
+ prerelease: false
143
+ type: :development
104
144
  - !ruby/object:Gem::Dependency
105
- name: rspec
106
145
  requirement: &id009 !ruby/object:Gem::Requirement
107
146
  none: false
108
147
  requirements:
109
148
  - - "="
110
149
  - !ruby/object:Gem::Version
150
+ hash: 27
151
+ segments:
152
+ - 1
153
+ - 3
154
+ - 0
111
155
  version: 1.3.0
112
- type: :development
113
- prerelease: false
114
156
  version_requirements: *id009
157
+ name: rspec
158
+ prerelease: false
159
+ type: :development
115
160
  - !ruby/object:Gem::Dependency
116
- name: rspec_hpricot_matchers
117
161
  requirement: &id010 !ruby/object:Gem::Requirement
118
162
  none: false
119
163
  requirements:
120
164
  - - "="
121
165
  - !ruby/object:Gem::Version
166
+ hash: 15
167
+ segments:
168
+ - 1
169
+ - 0
122
170
  version: "1.0"
123
- type: :development
124
- prerelease: false
125
171
  version_requirements: *id010
172
+ name: rspec_hpricot_matchers
173
+ prerelease: false
174
+ type: :development
126
175
  - !ruby/object:Gem::Dependency
127
- name: test-unit
128
176
  requirement: &id011 !ruby/object:Gem::Requirement
129
177
  none: false
130
178
  requirements:
131
179
  - - "="
132
180
  - !ruby/object:Gem::Version
181
+ hash: 25
182
+ segments:
183
+ - 1
184
+ - 2
185
+ - 3
133
186
  version: 1.2.3
134
- type: :development
135
- prerelease: false
136
187
  version_requirements: *id011
188
+ name: test-unit
189
+ prerelease: false
190
+ type: :development
137
191
  description: |
138
192
  Nesta is a lightweight Content Management System, written in Ruby using
139
193
  the Sinatra web framework. Nesta has the simplicity of a static site
@@ -166,6 +220,7 @@ files:
166
220
  - bin/nesta
167
221
  - config.ru
168
222
  - config/deploy.rb.sample
223
+ - lib/nesta.rb
169
224
  - lib/nesta/app.rb
170
225
  - lib/nesta/cache.rb
171
226
  - lib/nesta/commands.rb
@@ -238,7 +293,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
293
  requirements:
239
294
  - - ">="
240
295
  - !ruby/object:Gem::Version
241
- hash: 279403347508023079
296
+ hash: 3
242
297
  segments:
243
298
  - 0
244
299
  version: "0"
@@ -247,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
302
  requirements:
248
303
  - - ">="
249
304
  - !ruby/object:Gem::Version
250
- hash: 279403347508023079
305
+ hash: 3
251
306
  segments:
252
307
  - 0
253
308
  version: "0"