nesta 0.9.10 → 0.9.11

Sign up to get free protection for your applications and to get access to all the features.
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"