meetup-generator 1.7.4 → 1.8.0

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
2
  SHA256:
3
- metadata.gz: 4ecc7aaa818bbb98080faef70ffc8b7c5516f13ac7387405dcca9e0dd4d5d061
4
- data.tar.gz: 52315dd0d1d34ca951395c7791ca09bc0448565e93e4cfa793c7fd3799ba946a
3
+ metadata.gz: 8e86fe7eed3d0155400fc60878991b0bfa184de63b8401d4e0334b7d72f2da9d
4
+ data.tar.gz: 1d63003b89e0c6359bcae2fc429a574c50624f527d5ba3a78d90373edcd2a851
5
5
  SHA512:
6
- metadata.gz: f9c7ff3ee8bcd67edb0be82e6e204f6ddff69cd383734bbe75fb727addea1f655a93e96920039925babc65bfc74486f07a92a29c559b3025f5f773db3bd40179
7
- data.tar.gz: fdc8669bad3dbc9245fe71d14c5d8ad1cad73b8e9f158f5d63f7abf2804dab254f0ea03ae90d824043f8f019462f1c4f2def05d21cd000841058bb330a967d92
6
+ metadata.gz: 20cb1603a5b5e4ae6450b931782b8e43dc7f4b004bf3896b20d94105011a1bdf057be807ee9d5a1814acaca1ef36091c5b9f6d248af6ce443133bf85b88bf249
7
+ data.tar.gz: 5da324a509a3df23ac831d8170b23fe9446e6fc14b5b56cb05fac19eeb7945dcba97a0cf69536a1c309b55d629fb07914cd10d285db2163769ec5da93bc70509
data/Gemfile CHANGED
@@ -1,4 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source 'https://rubygems.org'
4
- gemspec
4
+
5
+ gem 'puma', '~> 6.4'
6
+ gem 'rackup', '~> 2.1'
7
+ gem 'sinatra', '~> 4.0'
8
+ gem 'slim', '~> 5.2'
9
+
10
+ gem 'bundler', '>= 2.4', group: :development
11
+ gem 'minitest', '~> 5.21', group: :development
12
+ gem 'nokogiri', '~> 1.16', group: :development
13
+ gem 'rack-test', '~> 2.1', group: :development
14
+ gem 'rake', '~> 13.0', group: :development
15
+ gem 'rubocop', '~> 1.60', group: :development
16
+ gem 'rubocop-minitest', '~> 0.34', group: :development
17
+ gem 'rubocop-performance', '~> 1.20', group: :development
18
+ gem 'rubocop-rake', '~> 0.5', group: :development
data/Gemfile.lock CHANGED
@@ -1,84 +1,109 @@
1
- PATH
2
- remote: .
3
- specs:
4
- meetup-generator (1.7.4)
5
- puma (~> 5.0.0)
6
- sinatra (~> 2.1)
7
- slim (~> 4.1)
8
-
9
1
  GEM
10
2
  remote: https://rubygems.org/
11
3
  specs:
12
4
  ast (2.4.2)
13
- mini_portile2 (2.5.0)
14
- minitest (5.14.3)
15
- mustermann (1.1.1)
5
+ base64 (0.2.0)
6
+ json (2.7.2)
7
+ language_server-protocol (3.17.0.3)
8
+ minitest (5.24.1)
9
+ mustermann (3.0.1)
16
10
  ruby2_keywords (~> 0.0.1)
17
- nio4r (2.5.4)
18
- nokogiri (1.11.1)
19
- mini_portile2 (~> 2.5.0)
11
+ nio4r (2.7.3)
12
+ nokogiri (1.16.7-aarch64-linux)
13
+ racc (~> 1.4)
14
+ nokogiri (1.16.7-arm-linux)
15
+ racc (~> 1.4)
16
+ nokogiri (1.16.7-arm64-darwin)
17
+ racc (~> 1.4)
18
+ nokogiri (1.16.7-x86-linux)
19
+ racc (~> 1.4)
20
+ nokogiri (1.16.7-x86_64-darwin)
21
+ racc (~> 1.4)
22
+ nokogiri (1.16.7-x86_64-linux)
20
23
  racc (~> 1.4)
21
- parallel (1.20.1)
22
- parser (3.0.0.0)
24
+ parallel (1.25.1)
25
+ parser (3.3.4.0)
23
26
  ast (~> 2.4.1)
24
- puma (5.0.4)
27
+ racc
28
+ puma (6.4.2)
25
29
  nio4r (~> 2.0)
26
- racc (1.5.2)
27
- rack (2.2.3)
28
- rack-protection (2.1.0)
29
- rack
30
- rack-test (1.1.0)
31
- rack (>= 1.0, < 3)
32
- rainbow (3.0.0)
33
- rake (13.0.3)
34
- regexp_parser (2.0.3)
35
- rexml (3.2.4)
36
- rubocop (1.9.0)
30
+ racc (1.8.1)
31
+ rack (3.1.7)
32
+ rack-protection (4.0.0)
33
+ base64 (>= 0.1.0)
34
+ rack (>= 3.0.0, < 4)
35
+ rack-session (2.0.0)
36
+ rack (>= 3.0.0)
37
+ rack-test (2.1.0)
38
+ rack (>= 1.3)
39
+ rackup (2.1.0)
40
+ rack (>= 3)
41
+ webrick (~> 1.8)
42
+ rainbow (3.1.1)
43
+ rake (13.2.1)
44
+ regexp_parser (2.9.2)
45
+ rexml (3.3.4)
46
+ strscan
47
+ rubocop (1.65.1)
48
+ json (~> 2.3)
49
+ language_server-protocol (>= 3.17.0)
37
50
  parallel (~> 1.10)
38
- parser (>= 3.0.0.0)
51
+ parser (>= 3.3.0.2)
39
52
  rainbow (>= 2.2.2, < 4.0)
40
- regexp_parser (>= 1.8, < 3.0)
41
- rexml
42
- rubocop-ast (>= 1.2.0, < 2.0)
53
+ regexp_parser (>= 2.4, < 3.0)
54
+ rexml (>= 3.2.5, < 4.0)
55
+ rubocop-ast (>= 1.31.1, < 2.0)
43
56
  ruby-progressbar (~> 1.7)
44
- unicode-display_width (>= 1.4.0, < 3.0)
45
- rubocop-ast (1.4.1)
46
- parser (>= 2.7.1.5)
47
- rubocop-minitest (0.10.3)
48
- rubocop (>= 0.87, < 2.0)
49
- rubocop-performance (1.9.2)
50
- rubocop (>= 0.90.0, < 2.0)
51
- rubocop-ast (>= 0.4.0)
52
- rubocop-rake (0.5.1)
53
- rubocop
54
- ruby-progressbar (1.11.0)
55
- ruby2_keywords (0.0.4)
56
- sinatra (2.1.0)
57
- mustermann (~> 1.0)
58
- rack (~> 2.2)
59
- rack-protection (= 2.1.0)
57
+ unicode-display_width (>= 2.4.0, < 3.0)
58
+ rubocop-ast (1.32.0)
59
+ parser (>= 3.3.1.0)
60
+ rubocop-minitest (0.35.1)
61
+ rubocop (>= 1.61, < 2.0)
62
+ rubocop-ast (>= 1.31.1, < 2.0)
63
+ rubocop-performance (1.21.1)
64
+ rubocop (>= 1.48.1, < 2.0)
65
+ rubocop-ast (>= 1.31.1, < 2.0)
66
+ rubocop-rake (0.6.0)
67
+ rubocop (~> 1.0)
68
+ ruby-progressbar (1.13.0)
69
+ ruby2_keywords (0.0.5)
70
+ sinatra (4.0.0)
71
+ mustermann (~> 3.0)
72
+ rack (>= 3.0.0, < 4)
73
+ rack-protection (= 4.0.0)
74
+ rack-session (>= 2.0.0, < 3)
60
75
  tilt (~> 2.0)
61
- slim (4.1.0)
62
- temple (>= 0.7.6, < 0.9)
63
- tilt (>= 2.0.6, < 2.1)
64
- temple (0.8.2)
65
- tilt (2.0.10)
66
- unicode-display_width (2.0.0)
76
+ slim (5.2.1)
77
+ temple (~> 0.10.0)
78
+ tilt (>= 2.1.0)
79
+ strscan (3.1.0)
80
+ temple (0.10.3)
81
+ tilt (2.4.0)
82
+ unicode-display_width (2.5.0)
83
+ webrick (1.8.1)
67
84
 
68
85
  PLATFORMS
69
- ruby
86
+ aarch64-linux
87
+ arm-linux
88
+ arm64-darwin
89
+ x86-linux
90
+ x86_64-darwin
91
+ x86_64-linux
70
92
 
71
93
  DEPENDENCIES
72
- bundler (~> 2.0)
73
- meetup-generator!
74
- minitest (~> 5.14)
75
- nokogiri (~> 1.10)
76
- rack-test (~> 1.1)
94
+ bundler (>= 2.4)
95
+ minitest (~> 5.21)
96
+ nokogiri (~> 1.16)
97
+ puma (~> 6.4)
98
+ rack-test (~> 2.1)
99
+ rackup (~> 2.1)
77
100
  rake (~> 13.0)
78
- rubocop (~> 1.9)
79
- rubocop-minitest (~> 0.10)
80
- rubocop-performance (~> 1.3)
101
+ rubocop (~> 1.60)
102
+ rubocop-minitest (~> 0.34)
103
+ rubocop-performance (~> 1.20)
81
104
  rubocop-rake (~> 0.5)
105
+ sinatra (~> 4.0)
106
+ slim (~> 5.2)
82
107
 
83
108
  BUNDLED WITH
84
- 2.2.3
109
+ 2.5.3
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # meetup-generator [![Build Status](https://travis-ci.org/snltd/meetup-generator.svg?branch=master)](https://travis-ci.org/snltd/meetup-generator) [![Maintainability](https://api.codeclimate.com/v1/badges/4487595d6afb26a57d82/maintainability)](https://codeclimate.com/github/snltd/meetup-generator/maintainability)
1
+ # meetup-generator
2
+
3
+ [![Test](https://github.com/snltd/meetup-generator/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/snltd/meetup-generator/actions/workflows/test.yml) ![Release](https://github.com/snltd/meetup-generator/workflows/Release/badge.svg) [![Gem Version](https://badge.fury.io/rb/meetup-generator.svg)](https://badge.fury.io/rb/meetup-generator)
2
4
 
3
5
  Built on an immutable polyglot femtoservice architecture, meetup-generator
4
6
  melds Deep ML with the power of the Blockchain to deliver planetscale insights
@@ -17,6 +19,11 @@ $ curl -s localhost:4567/api/talk | json
17
19
  "company": "prognosticatr.io"
18
20
  }
19
21
  ```
22
+ ## Running
23
+
24
+ ```sh
25
+ $ docker run -p 8080:8080 snltd/meetup-generator:latest
26
+ ```
20
27
 
21
28
  ## Building
22
29
 
@@ -29,7 +36,7 @@ $ rake build
29
36
  Build a container with
30
37
 
31
38
  ```sh
32
- $ docker build -t meetup-generator .
39
+ $ docker build -t latest .
33
40
  ```
34
41
 
35
42
  ## Running
@@ -47,18 +54,12 @@ Run from a git checkout
47
54
  $ bin/meetup-generator.rb
48
55
  ```
49
56
 
50
- Run the container from earlier:
51
-
52
- ```sh
53
- $ docker run -p 4567:4567 meetup-generator
54
- ```
55
-
56
57
  Install as a Solaris/Illumos service
57
58
 
58
59
  ```sh
59
60
  $ pfexec svccfg import package/meetup-generator.xml
60
61
  ```
61
62
 
62
- Contributing
63
+ ## Contributing
63
64
 
64
65
  Fork it, raise a PR.
@@ -91,12 +91,15 @@ tech:
91
91
  - API Gateway
92
92
  - APIs
93
93
  - ArangoDB
94
- - Argo
94
+ - ArgoCD
95
95
  - Athena
96
+ - Atlantis
96
97
  - AWS
97
98
  - bacon.js
99
+ - Bazel
98
100
  - Berkshelf
99
101
  - BigChain
102
+ - BigPanda
100
103
  - BigQuery
101
104
  - BigTable
102
105
  - Blockbridge
@@ -125,16 +128,19 @@ tech:
125
128
  - CFEngine
126
129
  - cgroups
127
130
  - ChaosKube
131
+ - Chaos Mesh
128
132
  - Chaos Toolkit
133
+ - ChatGPT
129
134
  - Chef
130
135
  - Chef/Puppet
131
136
  - CI/CD
132
137
  - Cilium
133
138
  - CircleCI
134
139
  - Clojure
140
+ - Cloud Custodian
141
+ - Cloud Foundry
135
142
  - Cloud9
136
143
  - CloudFormation
137
- - Cloud Foundry
138
144
  - Cloudfront
139
145
  - CloudSearch
140
146
  - Cloudstack
@@ -148,18 +154,21 @@ tech:
148
154
  - Coffeescript
149
155
  - Cognito
150
156
  - Coherence
157
+ - Copilot
151
158
  - Consul
152
159
  - Containerd
153
160
  - Contour
154
161
  - Convox
155
162
  - CoreDNS
156
163
  - CoreOS
164
+ - Cortex
157
165
  - Couchbase
158
166
  - CouchDB
159
167
  - CRI-O
160
168
  - Crossplane
161
169
  - Crystal
162
170
  - Cucumber
171
+ - Curiefense
163
172
  - "curl | sudo bash"
164
173
  - DalmatinerDB
165
174
  - Dapper
@@ -170,6 +179,8 @@ tech:
170
179
  - Deep Learning
171
180
  - Deis
172
181
  - Device Farm
182
+ - Dex
183
+ - Distribution
173
184
  - Distributed Tracing
174
185
  - Django
175
186
  - Docker
@@ -183,6 +194,7 @@ tech:
183
194
  - Dubbo
184
195
  - DynamoDB
185
196
  - Dynatrace
197
+ - eBPF
186
198
  - EC2
187
199
  - ECS
188
200
  - "Edge Rabbit"
@@ -211,6 +223,7 @@ tech:
211
223
  - Flocker
212
224
  - fluentd
213
225
  - Flume
226
+ - Flux
214
227
  - Flynn.io
215
228
  - Fog
216
229
  - Foodcritic
@@ -241,6 +254,7 @@ tech:
241
254
  - Grunt
242
255
  - Gulp
243
256
  - Habitat
257
+ - Hadolint
244
258
  - Hadoop
245
259
  - Harbor
246
260
  - Haskell
@@ -257,6 +271,7 @@ tech:
257
271
  - IAM
258
272
  - Immutable Infrastructure
259
273
  - Impala
274
+ - in-toto
260
275
  - IndexedDB
261
276
  - Infinispan
262
277
  - InfluxDB
@@ -277,6 +292,8 @@ tech:
277
292
  - KairosDB
278
293
  - Kanban
279
294
  - Kaniko
295
+ - Keda
296
+ - Keptn
280
297
  - Kiali
281
298
  - Kibana
282
299
  - Kind
@@ -300,13 +317,18 @@ tech:
300
317
  - KubeOne
301
318
  - Kubermatic
302
319
  - Kubernetes
320
+ - kube-bench
303
321
  - kube-spawn
304
322
  - KubeSpray
305
323
  - Kubic
306
324
  - Kubicorn
307
325
  - kublr
326
+ - KUDO
308
327
  - Kudu
328
+ - Kuma
329
+ - Kustomize
309
330
  - Kyma
331
+ - Kyverno
310
332
  - Lambda
311
333
  - Lex
312
334
  - Lightbend
@@ -319,6 +341,8 @@ tech:
319
341
  - Litmus
320
342
  - Logspout
321
343
  - Logstash
344
+ - Loki
345
+ - Longhorn
322
346
  - LunchBadger
323
347
  - LXC
324
348
  - LXD
@@ -340,6 +364,7 @@ tech:
340
364
  - Microliths
341
365
  - Micrometer
342
366
  - microservices
367
+ - Mimir
343
368
  - Minikube
344
369
  - monads
345
370
  - MongoDB
@@ -362,26 +387,36 @@ tech:
362
387
  - Noms
363
388
  - NoOps
364
389
  - NoSQL
390
+ - Notary
365
391
  - npm
366
392
  - Nuclio
367
393
  - NuGet
368
394
  - NuoDB
369
395
  - OCaml
370
396
  - Okta
397
+ - OPA
371
398
  - OpenFaaS
399
+ - OpenKruise
400
+ - OpenMetrics
372
401
  - OpenShift
402
+ - OpenTelemetry
373
403
  - OpenTracing
374
404
  - OpenWhisk
405
+ - OpenYurt
375
406
  - OpsWorks
376
407
  - OrientDB
377
408
  - PaaSta
378
409
  - Packer
379
410
  - Packetbeat
380
411
  - Papertrail
412
+ - Parsec
381
413
  - Perl
382
414
  - Phoenix
383
415
  - Pilosa
416
+ - Popeye
417
+ - Porter
384
418
  - Portus
419
+ - Portworx
385
420
  - Powerful Seal
386
421
  - Project Atomic
387
422
  - Prometheus
@@ -411,6 +446,7 @@ tech:
411
446
  - Rightscale
412
447
  - rkt
413
448
  - Rocket
449
+ - Rook
414
450
  - Rollbar
415
451
  - Rook
416
452
  - RSpec
@@ -446,7 +482,9 @@ tech:
446
482
  - SNI
447
483
  - Snowball
448
484
  - SNS
485
+ - SofaRPC
449
486
  - Solr
487
+ - SOPS
450
488
  - SPIFFE
451
489
  - Spinnaker
452
490
  - Spire
@@ -457,12 +495,15 @@ tech:
457
495
  - statsd
458
496
  - 'Step Functions'
459
497
  - Storage Gateway
498
+ - Strimsi
460
499
  - Sublime Text
461
500
  - Supergiant
462
501
  - Swarm
463
502
  - Symplegma
464
503
  - Sysdig
465
504
  - systemd
505
+ - TARS
506
+ - Tekton
466
507
  - Telegraf
467
508
  - Teleport
468
509
  - Telepresence
@@ -474,12 +515,15 @@ tech:
474
515
  - TiDB
475
516
  - TiKV
476
517
  - Timeseries Database
518
+ - Tinkerbell
477
519
  - TokyoTyrant
478
520
  - Toxiproxy
479
521
  - Traefik
480
- - Travis CI
522
+ - Travis
523
+ - Tremor
481
524
  - Trickster
482
525
  - Triton
526
+ - Trivy
483
527
  - Trufflehog
484
528
  - Tsuru
485
529
  - TUF
@@ -489,8 +533,13 @@ tech:
489
533
  - unikernel
490
534
  - Vagrant
491
535
  - Vault
536
+ - Vector
537
+ - Velero
492
538
  - Velocity
539
+ - Victoria
540
+ - Virtual Kubelet
493
541
  - Vitess
542
+ - Volcano
494
543
  - Wangle
495
544
  - Wavefront
496
545
  - Weave
@@ -522,6 +571,7 @@ service:
522
571
  - Incident Management
523
572
  - Infrastructure
524
573
  - Metrics
574
+ - NoOps
525
575
  - Platform
526
576
  - Public Cloud
527
577
  - Private Cloud
@@ -544,6 +594,7 @@ extreme:
544
594
  - De-Risk
545
595
  - Destroy
546
596
  - Dockerize
597
+ - Gamify
547
598
  - Hybridize
548
599
  - Improve
549
600
  - Internet-Scale
@@ -574,6 +625,7 @@ quantifier:
574
625
  - Downtime
575
626
  - Enterprise Data Lake
576
627
  - Error Budget
628
+ - Gamification
577
629
  - Guerilla User Testing
578
630
  - Hipster Batch Paradigm
579
631
  - Leanness
@@ -584,6 +636,7 @@ quantifier:
584
636
  - Multiregion Dataflows
585
637
  - MVP
586
638
  - Observability
639
+ - Operational Debt
587
640
  - Patterns
588
641
  - Polyglot Persistence
589
642
  - ROI
@@ -591,6 +644,7 @@ quantifier:
591
644
  - Seed Capital
592
645
  - Synergy
593
646
  - TCO
647
+ - Technical Debt
594
648
  - Threat Model
595
649
  - Uptime
596
650
  - Value Stream Network
@@ -612,11 +666,13 @@ food_style:
612
666
  - barrista
613
667
  - biodynamic
614
668
  - cave-aged
669
+ - cold-brew
615
670
  - copper-still
616
671
  - craft
617
672
  - extra-matured
618
673
  - fairtrade
619
674
  - "farmers' market"
675
+ - foraged
620
676
  - fusion
621
677
  - gourmet
622
678
  - guest-curated
@@ -625,13 +681,16 @@ food_style:
625
681
  - keg-aged
626
682
  - Lebanese
627
683
  - microbrewery
684
+ - plant-based
628
685
  - Scandinavian
629
686
  - seagan
630
687
  - seasonal
688
+ - vegetarian
631
689
  - vegan
632
690
 
633
691
  food:
634
692
  - ales
693
+ - avocado toast
635
694
  - beard yeast
636
695
  - beers
637
696
  - breads
@@ -647,16 +706,21 @@ food:
647
706
  - grazing boards
648
707
  - hummus
649
708
  - IPAs
709
+ - kimchi
710
+ - kombucha
650
711
  - lagers
651
712
  - micro-pizza
652
713
  - nonsense
653
714
  - olives
654
715
  - pickles
655
716
  - pizza
717
+ - pulled pork
656
718
  - quinoa
657
719
  - smoothie bowls
720
+ - sourdough
658
721
  - street food
659
722
  - tapas
723
+ - tacos
660
724
 
661
725
  skill_level:
662
726
  - Advanced User
@@ -884,6 +948,7 @@ template:
884
948
  - "'%tech% Considered Harmful' and other Trite Clichés"
885
949
  - "'You Have 15 Seconds to Comply' and other '80s Cliches stitched Loosely Together"
886
950
  - "10x-ing Your Team: The End of %job_title% %job_title% Culture"
951
+ - "6 Reasons why Boba Fett would use %tech%"
887
952
  - "A %adjective% %tech%, %tech%, %tech% and %tech% Mash-Up "
888
953
  - "A %tech% %adjective% %adjective% Micro-Framework"
889
954
  - "A Complicated Way to do Something Unnecessary Which Does Not Work"
@@ -933,6 +998,7 @@ template:
933
998
  - "Large-Scale %tech% Anti-Patterns Will %extreme% Your %service%"
934
999
  - "Like, Diversity and Stuff?"
935
1000
  - "Living for Meetups: I Haven't Done Any Actual Work Since 2013"
1001
+ - "Live Long and %verb%er"
936
1002
  - "Luke, I Am Your %verb%er"
937
1003
  - "Our %FNOPS% Journey"
938
1004
  - "Our %adjective% Micro-Framework"
@@ -943,7 +1009,7 @@ template:
943
1009
  - "Repeatedly Saying 'on premise' Without Understanding What it Means"
944
1010
  - "Rewriting Most of Kubernetes 101"
945
1011
  - "Roll Your Own Monitoring with %tech%, %tech%, %tech%, %tech%, %tech%, %tech%, %tech%, %tech% and %tech%"
946
- - "Someone Clever Enough to Help Society in a Thousand Ways Explains How they Maintain a Game Where People Use their Phone to Spend Real Money To Feed Imaginary Food to Imaginary Cats"
1012
+ - "Someone Clever Enough to Help Humanity in a Thousand Ways Explains How they Rewrote the Analytics Tooling for a Game Where People Use their Phone to Spend Real Money To Feed Imaginary Food to Imaginary Cats"
947
1013
  - "Something People Have Done Since 198%RAND9%, but with a New Name"
948
1014
  - "Stickers!"
949
1015
  - "Still Using %tech%?"
@@ -1119,6 +1185,8 @@ job_title:
1119
1185
  - Squadron Leader
1120
1186
  - Stormtrooper
1121
1187
  - Superstar
1188
+ - Symmathecist
1189
+ - Tech Whisperer
1122
1190
  - Technologist
1123
1191
  - Thought Leader
1124
1192
  - Visionary
data/lib/locator.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  require 'pathname'
4
4
 
5
5
  def locate_config_ru
6
- Pathname.new(__FILE__).dirname.parent + 'config.ru'
6
+ Pathname.new(__FILE__).dirname.parent.join('config.ru')
7
7
  end
@@ -12,9 +12,9 @@ class MeetupGenerator
12
12
  attr_reader :words, :lib
13
13
 
14
14
  def initialize
15
- @words = Zlib::GzipReader.open(LIB + 'words.gz').readlines.map(&:strip)
16
- @lib = YAML.safe_load(IO.read(LIB + 'all_the_things.yaml'),
17
- symbolize_names: true)
15
+ @words = Zlib::GzipReader.open(LIB.join('words.gz')).readlines.map(&:strip)
16
+ @lib = YAML.safe_load_file(LIB.join('all_the_things.yaml'),
17
+ symbolize_names: true)
18
18
  end
19
19
 
20
20
  # @param num [Integer] how many talks you want
@@ -22,18 +22,18 @@ class MeetupGenerator
22
22
  #
23
23
  def agenda(num = 5)
24
24
  { talks: lib[:template].sample(num).map { |t| talk(t) },
25
- refreshment: refreshment,
26
- location: location,
27
- date: date }
25
+ refreshment:,
26
+ location:,
27
+ date: }
28
28
  end
29
29
 
30
30
  # @param templates [Array[String]] array of templates
31
31
  #
32
32
  def talk(template = random_template)
33
- { title: title(template),
34
- talker: talker,
35
- role: role,
36
- company: company }
33
+ { title: "#{title(template)} With AI",
34
+ talker:,
35
+ role:,
36
+ company: }
37
37
  end
38
38
 
39
39
  def location
@@ -69,7 +69,7 @@ class MeetupGenerator
69
69
  end
70
70
 
71
71
  def something_ops
72
- (lib[:something_ops] * 4).sample(rand(2..4)).join + 'Ops'
72
+ "#{(lib[:something_ops] * 4).sample(rand(2..4)).join}Ops"
73
73
  end
74
74
 
75
75
  def pair(list1, list2)
@@ -6,9 +6,8 @@ require 'date'
6
6
 
7
7
  Gem::Specification.new do |gem|
8
8
  gem.name = 'meetup-generator'
9
- gem.version = ENV['RELEASE_VERSION'] ||
10
- "0.0.#{Time.now.strftime('%Y%m%d')}"
11
- gem.date = Date.today.to_s
9
+ gem.version = ENV.fetch('RELEASE_VERSION',
10
+ "0.0.#{Time.now.strftime('%Y%m%d')}")
12
11
 
13
12
  gem.summary = 'Stupid fatuous random string generatpr'
14
13
  gem.description = 'Generates a website advertising a fictional ' \
@@ -21,23 +20,9 @@ Gem::Specification.new do |gem|
21
20
 
22
21
  gem.bindir = 'bin'
23
22
  gem.executables = ['meetup-generator.rb', 'locate_meetup-generator']
24
- gem.files = IO.readlines('package/runtime_files', chomp: true)
25
- gem.test_files = gem.files.grep(%r{^spec/})
23
+ gem.files = File.readlines('package/runtime_files', chomp: true)
26
24
  gem.require_paths = %w[lib]
27
25
 
28
- gem.add_runtime_dependency 'puma', '~> 5.0.0'
29
- gem.add_runtime_dependency 'sinatra', '~>2.1'
30
- gem.add_runtime_dependency 'slim', '~> 4.1'
31
-
32
- gem.add_development_dependency 'bundler', '~> 2.0'
33
- gem.add_development_dependency 'minitest', '~> 5.14'
34
- gem.add_development_dependency 'nokogiri', '~> 1.10'
35
- gem.add_development_dependency 'rack-test', '~> 1.1'
36
- gem.add_development_dependency 'rake', '~> 13.0'
37
- gem.add_development_dependency 'rubocop', '~> 1.9'
38
- gem.add_development_dependency 'rubocop-minitest', '~> 0.10'
39
- gem.add_development_dependency 'rubocop-performance', '~> 1.3'
40
- gem.add_development_dependency 'rubocop-rake', '~> 0.5'
41
-
42
- gem.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
26
+ gem.required_ruby_version = Gem::Requirement.new('>= 3.1.0')
27
+ gem.metadata['rubygems_mfa_required'] = 'true'
43
28
  end
@@ -1,12 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
+ require 'rack/builder'
5
+
4
6
  %w[minitest minitest/unit minitest/autorun rack/test pathname json
5
7
  yaml cgi nokogiri].each { |f| require f }
6
8
 
7
9
  MGROOT = Pathname.new(__FILE__).realpath.dirname.parent
8
10
 
9
- OUTER_APP = Rack::Builder.parse_file((MGROOT + 'config.ru').to_s).first
11
+ OUTER_APP = Rack::Builder.parse_file(MGROOT.join('config.ru').to_s)
10
12
 
11
13
  # Acceptance tests for the meetup generator. Yeah, I know.
12
14
  #
@@ -16,9 +18,10 @@ class TestApp < MiniTest::Test
16
18
  include Rack::Test::Methods
17
19
 
18
20
  def initialize(args)
19
- super(args)
20
- @things = YAML.safe_load(IO.read(MGROOT + 'lib' + 'all_the_things.yaml'),
21
- symbolize_names: true)
21
+ super
22
+ @things = YAML.safe_load_file(MGROOT.join(
23
+ 'lib', 'all_the_things.yaml'
24
+ ), symbolize_names: true)
22
25
  end
23
26
 
24
27
  def app
@@ -42,16 +45,17 @@ class TestApp < MiniTest::Test
42
45
  #
43
46
  def test_default
44
47
  templates = things[:template].map do |t|
48
+ t = "#{t} With AI"
45
49
  escaped = Regexp.escape(CGI.escapeHTML(t))
46
50
  matcher = escaped.gsub(/%\w+%/, '[\w\-]+').gsub(/RAND\d+/, '\d+')
47
- .gsub(/FNOPS/, '\w+')
48
- Regexp.new('^.*ttitle">' + matcher + '</span>.*$')
51
+ .gsub('FNOPS', '\w+')
52
+ Regexp.new("^.*ttitle\">#{matcher}</span>.*$")
49
53
  end
50
54
 
51
55
  until templates.empty?
52
56
  get '/'
53
57
  assert_equal('text/html;charset=utf-8',
54
- last_response.header['Content-Type'])
58
+ last_response.headers['Content-Type'])
55
59
  last_response.ok?
56
60
  resp = last_response.body
57
61
  assert_match(/The code./, resp)
@@ -65,7 +69,7 @@ class TestApp < MiniTest::Test
65
69
  assert last_response.ok?
66
70
  assert_instance_of(String, last_response.body)
67
71
  assert_match(/^"\w+ \w+"$/, last_response.body)
68
- assert last_response.header['Content-Type'] == 'application/json'
72
+ assert last_response.headers['Content-Type'] == 'application/json'
69
73
  end
70
74
 
71
75
  def test_api_company
@@ -73,15 +77,15 @@ class TestApp < MiniTest::Test
73
77
  assert last_response.ok?
74
78
  assert_instance_of(String, last_response.body)
75
79
  assert_match(/^"\w+.io"$/, last_response.body)
76
- assert last_response.header['Content-Type'] == 'application/json'
80
+ assert last_response.headers['Content-Type'] == 'application/json'
77
81
  end
78
82
 
79
83
  def test_api_misc
80
84
  %w[title role refreshment location date].each do |word|
81
- get format('/api/%<word>s', word: word)
85
+ get format('/api/%<word>s', word:)
82
86
  assert last_response.ok?
83
87
  assert_instance_of(String, last_response.body)
84
- assert last_response.header['Content-Type'] == 'application/json'
88
+ assert last_response.headers['Content-Type'] == 'application/json'
85
89
  end
86
90
  end
87
91
 
data/views/default.slim CHANGED
@@ -1,5 +1,5 @@
1
1
  doctype html
2
- html
2
+ html lang='en'
3
3
  head
4
4
  title #Devops Meetup
5
5
  meta charset='utf-8'
metadata CHANGED
@@ -1,183 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meetup-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.4
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Fisher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-28 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: puma
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 5.0.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 5.0.0
27
- - !ruby/object:Gem::Dependency
28
- name: sinatra
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.1'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.1'
41
- - !ruby/object:Gem::Dependency
42
- name: slim
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '4.1'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '4.1'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.0'
69
- - !ruby/object:Gem::Dependency
70
- name: minitest
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '5.14'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '5.14'
83
- - !ruby/object:Gem::Dependency
84
- name: nokogiri
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.10'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.10'
97
- - !ruby/object:Gem::Dependency
98
- name: rack-test
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.1'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.1'
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '13.0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '13.0'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.9'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '1.9'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop-minitest
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.10'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.10'
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop-performance
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.3'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.3'
167
- - !ruby/object:Gem::Dependency
168
- name: rubocop-rake
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '0.5'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '0.5'
11
+ date: 2024-08-05 00:00:00.000000000 Z
12
+ dependencies: []
181
13
  description: Generates a website advertising a fictional DevOps meetup, using all
182
14
  the latest buzzwords, new-shiny, and clichés
183
15
  email: rob@sysdef.xyz
@@ -211,7 +43,8 @@ files:
211
43
  homepage: https://github.com/snltd/meetup-generator
212
44
  licenses:
213
45
  - BSD-2-Clause
214
- metadata: {}
46
+ metadata:
47
+ rubygems_mfa_required: 'true'
215
48
  post_install_message:
216
49
  rdoc_options: []
217
50
  require_paths:
@@ -220,17 +53,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
53
  requirements:
221
54
  - - ">="
222
55
  - !ruby/object:Gem::Version
223
- version: 2.5.0
56
+ version: 3.1.0
224
57
  required_rubygems_version: !ruby/object:Gem::Requirement
225
58
  requirements:
226
59
  - - ">="
227
60
  - !ruby/object:Gem::Version
228
61
  version: '0'
229
62
  requirements: []
230
- rubygems_version: 3.1.4
63
+ rubygems_version: 3.5.11
231
64
  signing_key:
232
65
  specification_version: 4
233
66
  summary: Stupid fatuous random string generatpr
234
- test_files:
235
- - spec/acceptance_spec.rb
236
- - spec/meetup_generator_spec.rb
67
+ test_files: []