daily_notices 0.6.6 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 85f5727ca36a0260726baede17d965c719224455
4
- data.tar.gz: 5b78924c42e7dd23ff08a4d50c29d57736072b8e
2
+ SHA256:
3
+ metadata.gz: 1847519cd9ecced81910d9b0d1ba8e71b0eee2fec13c4f18ec4f594f34172869
4
+ data.tar.gz: 550caf76cae6740376ea7ecf903969bbb50eaa444d2f15c57e49f0028c93195a
5
5
  SHA512:
6
- metadata.gz: d75d69e094728d177a9ecca855b51b142ce11cc49684af3d0c382771df8ffd15d79d713fe6f73afc2f0864e681faab4be2beaef32b951b0befe42edb93e102d5
7
- data.tar.gz: 2be2b878731649df9686ed1e84877a57460ba163d4b400f819806e682bcdf20cceee205e14b04be7cfb119a8f00ace9a614e99325de451b545fab6914fbd86e8
6
+ metadata.gz: 105c15ffe704ed78f7c8c91abe06be5575c049ed04345be20c0fc979c72691f228fedaff14eb25b2a71df03eb2889f7745648a689b43ecbe90aeb564fa798ca0
7
+ data.tar.gz: c79cd794580731b2c626a1530f29d0911f8342214a488ef8f4ba7c844777efec7fc60631a5864ce29b32b9a5232eb5534a3f4045a6626b7d778a31d77c817268
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/daily_notices.rb CHANGED
@@ -10,34 +10,39 @@ require 'rss_creator'
10
10
 
11
11
 
12
12
  class DailyNotices
13
-
13
+ include RXFHelperModule
14
+
14
15
  attr_accessor :title, :description, :link, :dx_xslt, :rss_xslt
15
16
 
16
- def initialize(filepath='', url_base: 'http:/127.0.0.1/', identifier: '',
17
- dx_xslt: '', rss_xslt: '', target_page: :recordset,
18
- target_xslt: '', title: 'daily notices', log: nil)
19
-
17
+ def initialize(filepath='', url_base: 'http:/127.0.0.1/', identifier: '',
18
+ dx_xslt: '', rss_xslt: '', target_page: :recordset,
19
+ target_xslt: '', title: 'daily notices', log: nil,
20
+ debug: false)
21
+
20
22
  @filepath, @url_base, @dx_xslt, @rss_xslt, @target_page, @target_xslt, \
21
- @identifier, @log = filepath, url_base, dx_xslt, rss_xslt, \
22
- target_page, target_xslt, identifier, log
23
+ @identifier, @log, @debug = filepath, url_base, dx_xslt, rss_xslt, \
24
+ target_page, target_xslt, identifier, log, debug
25
+
26
+
27
+ # note: card is intended for storing meta data in JSON format
28
+
29
+ @schema = 'items[title, identifier, image, bio, location, website,' +
30
+ ' banner_image]/item(title, description, card, time, link)'
31
+ @default_key = 'uid'
23
32
 
24
-
25
- @schema ||= 'items[title, identifier]/item(title, description, time, link)'
26
- @default_key ||= 'uid'
27
-
28
33
  if dx_xslt.nil? then
29
34
 
30
35
  subdir = File.basename filepath
31
36
  dir = url_base[/http:\/\/[^\/]+\/(.*)/,1]
32
37
 
33
38
  dxxsltfilename = "dx#{Time.now.to_i.to_s}.xsl"
34
- dxxsltfilepath = '/' + [dir, subdir, dxxsltfilename].join('/')
35
- File.write File.join(filepath, dxxsltfilename), \
39
+ dxxsltfilepath = '/' + [dir, subdir, dxxsltfilename].join('/')
40
+ FileX.write File.join(filepath, dxxsltfilename), \
36
41
  DxSliml.new(dx: @schema).to_xslt
37
-
42
+
38
43
  @dx_xslt = dxxsltfilepath
39
44
  end
40
-
45
+
41
46
  if rss_xslt.nil? then
42
47
 
43
48
  subdir = File.basename filepath
@@ -45,192 +50,239 @@ class DailyNotices
45
50
 
46
51
  rssxsltfilename = "rssx#{Time.now.to_i.to_s}.xsl"
47
52
  rssxsltfilepath = '/' + [dir, subdir, rssxsltfilename].join('/')
48
- File.write File.join(filepath, rssxsltfilename), \
53
+ FileX.write File.join(filepath, rssxsltfilename), \
49
54
  RssSliml.new().to_xslt
50
-
55
+
51
56
  @rss_xslt = rssxsltfilepath
52
- end
53
-
57
+ end
58
+
54
59
  @day = Time.now.day
55
60
  @title = title
56
61
  new_day()
57
-
62
+
58
63
  # open the Dynarex file or create a new Dynarex file
59
64
 
60
65
  @rssfile = File.join(@filepath, 'rss.xml')
61
66
 
62
- if File.exists? @rssfile then
63
- @rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
64
- custom_fields: ['topic']
67
+ if FileX.exists? @rssfile then
68
+ @rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
69
+ custom_fields: ['topic'], log: @log
65
70
  else
66
71
 
67
- @rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
68
- custom_fields: ['topic']
72
+ @rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
73
+ custom_fields: ['topic'], log: @log
74
+
69
75
  @rss.xslt = @rss_xslt
70
76
  @rss.title = @title || identifier.capitalize + ' daily notices'
71
77
  @rss.description = 'Generated using the daily_notices gem'
72
78
  @rss.link = @url_base
73
- end
74
-
79
+ end
80
+
75
81
  # :recordset or : record
76
82
  @target_page = target_page
77
83
  end
78
-
79
- def create(id: Time.now.to_i.to_s,
80
- item: {time: Time.now.strftime('%H:%M %p - %d %b %Y'), title: nil})
84
+
85
+ def create(id: Time.now.to_i.to_s,
86
+ item: {time: Time.now.strftime('%H:%M %p - %d %b %Y'),
87
+ title: nil})
81
88
 
82
89
  @log.info 'daily_notices/create: item: ' + item.inspect if @log
83
90
  h = item
84
91
 
85
92
  new_day() if @day != Time.now.day
86
93
 
87
- if @dx.all.any? and
94
+ if @dx.all.any? and
88
95
  @dx.all.first.description == CGI.unescape(h[:description].to_s) then
89
96
 
90
97
  return :duplicate
91
98
 
92
99
  end
93
100
 
94
- h[:link] ||= create_link(id)
101
+ h[:link] ||= create_link(id)
95
102
  h[:title] ||= h[:description]
96
103
  .split(/\n/,2).first.gsub(/\<\/?\w+[^>]*>/,'')[0..140]
97
- h[:time] ||= Time.now.strftime('%H:%M %p - %d %b %Y')
104
+ h[:time] ||= Time.now.strftime('%H:%M %p · %b %d %Y')
105
+
98
106
 
99
107
  #@dx.create({description: description, time: time}, id: id)
100
- @dx.create(h, id: id)
108
+ puts 'before @dx.create' if @debug
109
+ @log.info 'daily_notices/create: before' if @log
110
+
111
+ # deep clone the Hash object
112
+ h3 = Marshal.load( Marshal.dump(h) )
113
+ h[:card] = h[:card].to_json if h[:card] and h[:card].is_a? Hash
114
+
115
+ @dx.create(h, id: id)
116
+ @log.info 'daily_notices/create: after' if @log
117
+ #puts 'after @dx.create' if @debug
118
+
101
119
  @dx.save @indexpath
102
-
120
+
103
121
  render_html_files(id)
104
122
 
105
123
  # Add it to the RSS document
106
124
 
107
-
108
- @rss.add(item: h, id: id)
125
+ if h3[:card] and h3[:card].is_a? Hash then
126
+
127
+ card = h3[:card]
128
+ h2 = card[card.keys.first]
129
+
130
+ content = case card.keys.first
131
+ when :summary_large_image
132
+ "\n<h1>%s</h1><p>%s</p>" % [h2[:title], h2[:desc]]
133
+ end
134
+
135
+ h3[:title] += h2[:title] if h3[:title].empty?
136
+ h3[:description] += content
137
+
138
+ end
139
+
140
+ @log.debug 'daily_notices/create: h3: ' + h3.inspect if @log
141
+ @rss.add(item: h3, id: id)
109
142
  @rss.save @rssfile
110
-
143
+ # open up the RSS file and fill in the title and description fields
144
+
111
145
  on_add(@indexpath, id)
112
-
146
+
113
147
  return true
114
148
 
115
149
  end
116
-
150
+
117
151
  alias add create
118
-
119
-
152
+
153
+
120
154
  def delete(id)
121
-
155
+
122
156
  [@dx, @rss].each {|x| x.delete(id.to_s); x.save}
123
157
 
124
158
  archive_path = Time.at(id.to_i).strftime("%Y/%b/%-d").downcase
125
- indexpath = File.join(@filepath, archive_path, id.to_s)
159
+ indexpath = File.join(@filepath, archive_path, id.to_s)
160
+
161
+ FileUtils.rm_rf indexpath
126
162
 
127
- FileUtils.rm_rf indexpath
128
-
129
163
  id.to_s + ' deleted'
130
-
164
+
131
165
  end
132
-
166
+
133
167
  def description()
134
168
  @rss.description
135
169
  end
136
-
170
+
137
171
  def description=(val)
138
172
  @rss.description = val
139
- end
140
-
173
+ end
174
+
175
+ def image=(val)
176
+ image_url, target_url = val.split
177
+ @rss.image_url = image_url
178
+ @rss.image_target_url = target_url
179
+ end
180
+
141
181
  def title()
142
182
  @rss.title
143
183
  end
144
-
184
+
145
185
  def title=(val)
146
186
  @rss.title = val
147
187
  end
148
-
188
+
149
189
  def link()
150
190
  @rss.link
151
191
  end
152
-
192
+
153
193
  def link=(val)
154
194
  @rss.link = val
155
195
  end
156
196
 
157
-
158
- # If you wish override this method or use it in block form to add a
197
+
198
+ # If you wish override this method or use it in block form to add a
159
199
  # notifier, callback routine or webhook, whenever a new record is added.
160
200
  #
161
201
  def on_add(xmlpath, id)
162
-
202
+
163
203
  yield(xmlpath, id) if block_given?
164
-
165
- end
166
-
204
+
205
+ end
206
+
167
207
  def save()
168
- @rss.save @rssfile
208
+ @rss.save @rssfile
169
209
  end
170
-
210
+
171
211
  def to_dx()
172
212
  Dynarex.new @dx.to_xml
173
213
  end
174
-
175
- private
176
-
214
+
215
+ private
216
+
177
217
  def create_link(id)
178
218
  [File.join(@url_base, File.basename(@filepath), 'status', id)].join('/')
179
219
  end
180
-
220
+
181
221
  # configures the target page (using a Dynarex document) for a new day
182
222
  #
183
223
  def new_day()
184
-
224
+
225
+ puts 'inside new_day' if @debug
226
+
185
227
  @archive_path = Time.now.strftime("%Y/%b/%-d").downcase
186
-
228
+
187
229
  @indexpath = File.join(@filepath, @archive_path, 'index.xml')
188
- FileUtils.mkdir_p File.dirname(@indexpath)
189
-
190
-
191
- if File.exists? @indexpath then
230
+ FileX.mkdir_p File.dirname(@indexpath)
231
+
232
+
233
+ if FileX.exists? @indexpath then
192
234
  @dx = Dynarex.new @indexpath
193
235
  else
194
- @dx = Dynarex.new @schema
236
+
237
+ puts 'creating a new dx file' if @debug
238
+ @dx = Dynarex.new @schema, debug: @debug
195
239
  @dx.order = 'descending'
196
240
  @dx.default_key = @default_key
197
241
  @dx.xslt = @dx_xslt
198
242
  @dx.title = @title
199
243
  @dx.identifier = @identifier
200
- end
201
-
202
- end
203
-
244
+ end
245
+
246
+ end
247
+
204
248
  def render_html_files(id)
205
-
249
+
250
+ puts 'inside render_html_files' if @debug
251
+
206
252
  if @target_page == :recordset then
207
- File.write File.join(@filepath, @archive_path, 'index.html'), \
253
+ FileX.write File.join(@filepath, @archive_path, 'index.html'), \
208
254
  @dx.to_html(domain: @url_base)
209
255
  else
210
256
 
211
257
  target_path = File.join(@filepath, @archive_path, id, 'index.html')
212
- FileUtils.mkdir_p File.dirname(target_path)
258
+ FileX.mkdir_p File.dirname(target_path)
213
259
 
214
260
  rx = @dx.find(id)
215
261
 
262
+ puts 'rx: ' + rx.inspect if @debug
216
263
  kvx = rx.to_kvx
217
- yield kvx if block_given?
218
264
 
265
+ yield kvx if block_given?
266
+ puts 'before kvx.to_xml' if @debug
267
+ puts 'kvx.to_xml : ' + kvx.to_xml.inspect
268
+ puts 'before 2 kvx.to_xml' if @debug
219
269
  rxdoc = Rexle.new(kvx.to_xml)
270
+ puts 'after kvx.to_xml' if @debug
271
+
220
272
  rxdoc.instructions << ['xml-styelsheet',\
221
273
  "title='XSL_formatting' type='text/xsl' href='#{@target_xslt}'"]
222
- File.write target_path.sub(/\.html$/,'.xml', ), rxdoc.xml(pretty: true)
223
-
224
- unless File.exists? @target_xslt then
274
+ FileX.write target_path.sub(/\.html$/,'.xml', ), rxdoc.xml(pretty: true)
225
275
 
226
- File.write @target_xslt,
276
+ unless FileX.exists? @target_xslt then
277
+
278
+ FileX.write @target_xslt,
227
279
  RxSliml.new(fields: %i(description time)).to_xslt
228
280
  end
229
-
230
- File.write target_path, rx.to_html(xslt: @target_xslt)
231
281
 
232
- end
282
+ FileX.write target_path, rx.to_html(xslt: @target_xslt)
283
+
284
+ end
233
285
 
234
286
  end
235
-
287
+
236
288
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daily_notices
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,27 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMjIyMTYwODE4WhcN
15
- MTkwMjIyMTYwODE4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuRlpq
17
- ZrkUp/VYCQ7NlOwL1tZB2syojWefG9xFjEcJpZbzR3UQ5a5lh80GTWlSCZmN1J7j
18
- ONa7U//jJ4Z8qUflIffrASHccXzBGfSHXBKjleCjfrqxBnBgv/OWN77wX4jgZ4mP
19
- ypa5YoN0SXfKJxED410rLlAYzLKw8Z7oyCVviKOPbAOTg06agom3q1CO0xH/TQU7
20
- DCinIjLrZiUTwx21ceF5zA3RPS1PmpbhKevUBJZJZ3XuhVcJ0zTHEuN6UK8chcPb
21
- ozSP40cswhfLk+CKx542rg4L8pu2X2B8bkWzv92NxPPmHbogna1sJry7a9P4j8Dz
22
- ISYgKqChVsoHPbJFAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFEq/hqkUhx5Rn5Ue7iJ45UFA5hpsMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAFLD7+YfG7ir5sp5wdwg
26
- ZpEC5007bvqNV3gWZFAGhVZe1MU8iOtt8e4l5dLwL6mXyy8cWDRe/uxjuBdLfd8f
27
- f3vY8DgXuDpEjLqI3W5/CcebbhwzggA3jmMC2AwOsqa9mmqasRJOuE1cS99LFsyW
28
- odLGGXcBQifoXrFVfmv/RWw/U4Xaerz3djYOTTeVZunc5S13pmdJmZr2sQ1I7+n2
29
- nshwH3gLUVCrnX4aM0/LjP9OeDu1Z3C8WR2hdLHaCgsWMD4OOva1M/n8y2YWt9xU
30
- kevhQAOzRKqVpqtA1jTyKzuey4YXCNgnQSGNztySvUk2QlUdEStZNMkTM7uqL9Ob
31
- jzM=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwMjI0MTMyOTM2WhcN
15
+ MjIwMjI0MTMyOTM2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDJvsa6
17
+ TnHpX2TYC4DnR82ZR2GNtpA1dNtRlwr/Z21VmkZxSq0YgpbNvGNLZHQFm03egVwR
18
+ KHj7RifsC3RBlzLNZTBvUkmQSJiOZvXB7tWWT3kA5HCwjyMkGuLPxOVDY7HyvEVF
19
+ kxFZgylN+66aJWV6gPSQ347jihF6WXIBfUYlDg8s4Bkl9KI8huzPTrP2UTXjK6Tz
20
+ mXBvLf5nv9FvL+TwQBOXwxreGW9zUJWRrtIpvqu+QFPVBSu4Ov4XDdik9jH2e5RZ
21
+ s1z1lSmsYiP10o3KbOaVZ4wjEDu626a+N1sjS4YU18CvHOwgESOaFqEpWjOsWKep
22
+ +6tjWbYVKSi2vfU+a/jNPEA0ssvqFieFIO00Jv1LyZFD/U3q8ZTDkMHucz4E8f80
23
+ mUJacvaFG3DTYiMDkIU9BuNy4vvIf+AoeTR5AhsoZBMSTU1A0EnH5mh790wkJab8
24
+ uY1GBwbmxeWl4OGD675ygAJSL2tQJAQBDMNKi+fB73/GWBsQAXBBR3LN5z0CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUjkgH/7j1
26
+ kSzWPoe0UDHGVZGJPbEwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAi0SDZ62eIMvbMY5FSXEY30wSVmiq+JhcIBjfHGXL
29
+ hQkhYqAnpzXD7oq0c3USmZtTGn4N8Cy1Sm0WR3RUvbYF6Dta2o1UKQ0vIko/i0kj
30
+ cNcvG6LcQkUt1mPhEMWAVoWvBL7xySN6yU9Ls7YmpW9Y+62v74NwGqx8c6N2VZKL
31
+ Vw24Rh4OC9e5cIjO+SR0KRI4+YFm86SnPsVXycqaHvMO8rNBgxGqR1FfFYrNUn0I
32
+ jafFtIcshyvSFoAaYK5GbPD8Xw/vZ/Red1SXdjmC4+j5ZtAx2c+vgK1lErjGqsYp
33
+ /XJl7PJxLwoAHYtYjensYXkRw8RZ7Re+HsW4IAmq1IQtBEYjjgWUwEhry56jQ/1A
34
+ ovxhAIUn9BlZdnsefgTYj2Cy+7z0VyGgWOwrxb1WmGNqjIvZtlFEQzm2yGelNIB2
35
+ mq989lGt58a/Y5CLIB7CrHXwKhKPrMrl9wrNJQaGhmKCpC48MvGPzmGUKYO3OTRK
36
+ QCT4F3Esm7/YTYtL3CQJWI1T
32
37
  -----END CERTIFICATE-----
33
- date: 2018-08-05 00:00:00.000000000 Z
38
+ date: 2022-01-19 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: rss_creator
@@ -38,20 +43,20 @@ dependencies:
38
43
  requirements:
39
44
  - - "~>"
40
45
  - !ruby/object:Gem::Version
41
- version: '0.3'
46
+ version: '0.5'
42
47
  - - ">="
43
48
  - !ruby/object:Gem::Version
44
- version: 0.3.11
49
+ version: 0.5.1
45
50
  type: :runtime
46
51
  prerelease: false
47
52
  version_requirements: !ruby/object:Gem::Requirement
48
53
  requirements:
49
54
  - - "~>"
50
55
  - !ruby/object:Gem::Version
51
- version: '0.3'
56
+ version: '0.5'
52
57
  - - ">="
53
58
  - !ruby/object:Gem::Version
54
- version: 0.3.11
59
+ version: 0.5.1
55
60
  - !ruby/object:Gem::Dependency
56
61
  name: dx_sliml
57
62
  requirement: !ruby/object:Gem::Requirement
@@ -78,42 +83,42 @@ dependencies:
78
83
  requirements:
79
84
  - - "~>"
80
85
  - !ruby/object:Gem::Version
81
- version: '0.1'
86
+ version: '0.2'
82
87
  - - ">="
83
88
  - !ruby/object:Gem::Version
84
- version: 0.1.2
89
+ version: 0.2.1
85
90
  type: :runtime
86
91
  prerelease: false
87
92
  version_requirements: !ruby/object:Gem::Requirement
88
93
  requirements:
89
94
  - - "~>"
90
95
  - !ruby/object:Gem::Version
91
- version: '0.1'
96
+ version: '0.2'
92
97
  - - ">="
93
98
  - !ruby/object:Gem::Version
94
- version: 0.1.2
99
+ version: 0.2.1
95
100
  - !ruby/object:Gem::Dependency
96
101
  name: rss_sliml
97
102
  requirement: !ruby/object:Gem::Requirement
98
103
  requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '0.1'
102
104
  - - ">="
103
105
  - !ruby/object:Gem::Version
104
- version: 0.1.0
106
+ version: 0.2.0
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.2'
105
110
  type: :runtime
106
111
  prerelease: false
107
112
  version_requirements: !ruby/object:Gem::Requirement
108
113
  requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '0.1'
112
114
  - - ">="
113
115
  - !ruby/object:Gem::Version
114
- version: 0.1.0
116
+ version: 0.2.0
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.2'
115
120
  description:
116
- email: james@jamesrobertson.eu
121
+ email: digital.robertson@gmail.com
117
122
  executables: []
118
123
  extensions: []
119
124
  extra_rdoc_files: []
@@ -139,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
144
  version: '0'
140
145
  requirements: []
141
146
  rubyforge_project:
142
- rubygems_version: 2.6.13
147
+ rubygems_version: 2.7.10
143
148
  signing_key:
144
149
  specification_version: 4
145
150
  summary: A public facing noticeboard which is centered around an RSS feed.
metadata.gz.sig CHANGED
Binary file