meetup-generator 1.7.4 → 1.8.0

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: 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: []