rodbot 0.3.4 → 0.4.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: eac36ded2dc61a62f3a5e9c236987ff66f0aadf65f216b96932375af2cec3241
4
- data.tar.gz: '099b12406aa01b8ec165efb25a3faef9fd1efeed3a8c9a7c0c0bb05febadf2e8'
3
+ metadata.gz: 874d1e4e749027338c4711ceaf6daae88eb17ca7895f947345b90a53ff1b98b6
4
+ data.tar.gz: 2a0fc3868240dd4b53504c66f7d4940228ec48f5a44291865e8c69b54135559d
5
5
  SHA512:
6
- metadata.gz: 06d6953cd85005effd3a54da59564e52a27d27cb42f61ccc2aeb0dfa32627a38d96f9e07fd9ba7d533fdf4210180d228582e5b39672a4124eba9831abb443016
7
- data.tar.gz: cec0a4d433b447c34fa91ff7a7fd9df416648851ef5b8156fb3d01579ac2d1abb26e7738ee000b1bdb322575dc99c5f8ac635843e1ecfc07d439b3b3403fddb9
6
+ metadata.gz: 538cc1141373f4c1a1c459b46c4141fc829e5819308be0ba817b31d4915b4d9287b23fc5ea2d32080cc75a9646de3bb28be2c0e8852eb9b604dacfbf0c0db94c
7
+ data.tar.gz: 96226c91181525f7afc469b624da4ceb91bc02fb578056244b886c79513028a80e87e717db0f2d00ff256d0c2e7775400493abbdecf2f35ed41816576fac86e8
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  Nothing so far
4
4
 
5
+ ## 0.4.0
6
+
7
+ #### Breaking Changes
8
+ * Rename `timezone` config to `time_zone` and properly implement and document
9
+ time zone handling
10
+
5
11
  ## 0.3.4
6
12
 
7
13
  #### Additions
data/README.md CHANGED
@@ -60,6 +60,13 @@ bundle config set --local with matrix
60
60
  bundle install
61
61
  ```
62
62
 
63
+ You can use more than one plugin of course. Please note that you have to list them separated with a space:
64
+
65
+ ```
66
+ bundle config set --local with matrix slack
67
+ bundle install
68
+ ```
69
+
63
70
  Please refer to the [Matrix plugin README](https://rubydoc.info/github/svoop/rodbot/file/lib/rodbot/plugins/matrix/README.matrix.md) for more on how to configure and authorise this relay service.
64
71
 
65
72
  Time to add Git to the mix. Both `gems.locked` and `.bundle` are included in order to use the same gems and versions both for local development and deployment to production:
@@ -128,7 +135,7 @@ It loads the following Roda plugins:
128
135
  * [run_append_slash](http://roda.jeremyevans.net/rdoc/classes/Roda/RodaPlugins/RunAppendSlash.html)
129
136
  * [halt](http://roda.jeremyevans.net/rdoc/classes/Roda/RodaPlugins/Halt.html)
130
137
  * [unescape_path](http://roda.jeremyevans.net/rdoc/classes/Roda/RodaPlugins/UnescapePath.html)
131
- * [render](http://roda.jeremyevans.net/rdoc/classes/Roda/RodaPlugins/Render.html).
138
+ * [render](http://roda.jeremyevans.net/rdoc/classes/Roda/RodaPlugins/Render.html)
132
139
 
133
140
  It loads the following Roda extensions provided by Rodbot:
134
141
 
@@ -204,6 +211,8 @@ The **schedule service** is a [Clockwork process](https://github.com/Rykian/cloc
204
211
 
205
212
  It's a good idea to have the **app service** do the heavy lifting while the schedule simply fires the corresponding HTTP request.
206
213
 
214
+ A word on time zones since they are particularly important for schedules: Automatic discovery of the local time zone and DST status is rather unreliable. Therefore, Rodbot expects you to set the time zone in `config/rodbot.rb` using `time_zone`. See `ls /usr/share/zoneinfo` for valid values. To correctly handle DST, you should use geographical zones like `Europe/Paris` rather than technical zones like `CET`. If `time_zone` is not defined, the environment variable `TZ` is read instead. And if `TZ` isn't set neither, Rodbot falls back to `Etc/UTC`.
215
+
207
216
  ## CLI
208
217
 
209
218
  The `rodbot` CLI is the main tool to manage your bot. For a full list of functions:
@@ -0,0 +1 @@
1
+ 86c927787dfd98933bc894182d2757c8b3667863e989a2b86ea67491dcc712bb294a726e118f619bf02b721e22aff5f879bc7ce700949293e65f21c757915a20
data/lib/rodbot/config.rb CHANGED
@@ -66,7 +66,7 @@ module Rodbot
66
66
  DEFAULTS = <<~END
67
67
  name 'Rodbot'
68
68
  port 7200
69
- timezone 'Etc/UTC'
69
+ time_zone ENV['TZ'] || 'Etc/UTC'
70
70
  db 'hash'
71
71
  app do
72
72
  threads Rodbot.env.development? ? (1..1) : (2..4)
@@ -93,8 +93,8 @@ module Rodbot
93
93
  end
94
94
 
95
95
  class Helpers
96
- def timezone
97
- Rodbot.config(:timezone)
96
+ def time_zone
97
+ Rodbot.config(:time_zone)
98
98
  end
99
99
 
100
100
  def relay_extensions
@@ -53,12 +53,12 @@ module Rodbot
53
53
  if Rodbot::Memoize.suspend? || block
54
54
  send(unmemoized_method, *args, **kargs, &block)
55
55
  else
56
- id = method.hash ^ args.hash ^ kargs.hash
57
- @_memoize_cache ||= {}
58
- if !Rodbot::Memoize.revisit? && @_memoize_cache.has_key?(id)
59
- @_memoize_cache[id]
56
+ cache = Rodbot::Memoize.cache
57
+ id = object_id.hash ^ method.hash ^ args.hash ^ kargs.hash
58
+ if !Rodbot::Memoize.revisit? && cache.has_key?(id)
59
+ cache[id]
60
60
  else
61
- @_memoize_cache[id] = send(unmemoized_method, *args, **kargs)
61
+ cache[id] = send(unmemoized_method, *args, **kargs)
62
62
  end
63
63
  end
64
64
  end
@@ -67,6 +67,13 @@ module Rodbot
67
67
  end
68
68
 
69
69
  class << self
70
+ attr_reader :cache
71
+
72
+ def included(base)
73
+ base.extend(ClassMethods)
74
+ @cache = {}
75
+ end
76
+
70
77
  %i(suspend revisit).each do |switch|
71
78
  ivar = "@#{switch}"
72
79
  define_method switch do |&block|
@@ -84,10 +91,6 @@ module Rodbot
84
91
  end
85
92
  end
86
93
  end
87
-
88
- def included(base)
89
- base.extend(ClassMethods)
90
- end
91
94
  end
92
95
  end
93
96
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rodbot
4
- VERSION = "0.3.4"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/rodbot.rb CHANGED
@@ -51,6 +51,7 @@ module Rodbot
51
51
  dir ENV['RODBOT_CREDENTIALS_DIR'] || Rodbot.env.root.join('config', 'credentials')
52
52
  end
53
53
  @config = Rodbot::Config.new(Rodbot.env.root.join('config', 'rodbot.rb'))
54
+ ENV['TZ'] = @config.config(:time_zone)
54
55
  @plugins = Rodbot::Plugins.new
55
56
  @db = (db = @config.config(:db)) && Rodbot::Db.new(db)
56
57
  @log = Rodbot::Log.new
@@ -9,7 +9,7 @@ x-defaults: &defaults
9
9
  ENV RODBOT_ENV="production"
10
10
  ENV RACK_ENV="production"
11
11
  ENV RACK_ROOT="/var/www"
12
- ENV TZ="[%= timezone %]"
12
+ ENV TZ="[%= time_zone %]"
13
13
  RUN mkdir -p /var/www
14
14
  WORKDIR /var/www
15
15
  COPY . .
@@ -9,7 +9,7 @@ x-defaults: &defaults
9
9
  ENV RODBOT_ENV="production"
10
10
  ENV RACK_ENV="production"
11
11
  ENV RACK_ROOT="/var/www"
12
- ENV TZ="[%= timezone %]"
12
+ ENV TZ="[%= time_zone %]"
13
13
  RUN mkdir -p /var/www
14
14
  WORKDIR /var/www
15
15
  COPY . .
@@ -1,5 +1,5 @@
1
1
  name 'Rodbot'
2
- timezone 'Etc/UTC'
2
+ time_zone 'Etc/UTC'
3
3
 
4
4
  plugin :hal
5
5
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rodbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Schwyn
@@ -10,26 +10,24 @@ bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhydWJ5
14
- L0RDPWJpdGNldGVyYS9EQz1jb20wHhcNMjIxMTA2MTIzNjUwWhcNMjMxMTA2MTIz
15
- NjUwWjAjMSEwHwYDVQQDDBhydWJ5L0RDPWJpdGNldGVyYS9EQz1jb20wggEiMA0G
13
+ MIIC+jCCAeKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhydWJ5
14
+ L0RDPWJpdGNldGVyYS9EQz1jb20wHhcNMjMxMTEwMTgyMzM2WhcNMjQxMTA5MTgy
15
+ MzM2WjAjMSEwHwYDVQQDDBhydWJ5L0RDPWJpdGNldGVyYS9EQz1jb20wggEiMA0G
16
16
  CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcLg+IHjXYaUlTSU7R235lQKD8ZhEe
17
17
  KMhoGlSUonZ/zo1OT3KXcqTCP1iMX743xYs6upEGALCWWwq+nxvlDdnWRjF3AAv7
18
18
  ikC+Z2BEowjyeCCT/0gvn4ohKcR0JOzzRaIlFUVInlGSAHx2QHZ2N8ntf54lu7nd
19
19
  L8CiDK8rClsY4JBNGOgH9UC81f+m61UUQuTLxyM2CXfAYkj/sGNTvFRJcNX+nfdC
20
20
  hM9r2kH1+7wsa8yG7wJ2IkrzNACD8v84oE6qVusN8OLEMUI/NaEPVPbw2LUM149H
21
21
  PVa0i729A4IhroNnFNmw4wOC93ARNbM1+LW36PLMmKjKudf5Exg8VmDVAgMBAAGj
22
- dzB1MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSfK8MtR62mQ6oN
23
- yoX/VKJzFjLSVDAdBgNVHREEFjAUgRJydWJ5QGJpdGNldGVyYS5jb20wHQYDVR0S
24
- BBYwFIEScnVieUBiaXRjZXRlcmEuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAYG2na
25
- ye8OE2DANQIFM/xDos/E4DaPWCJjX5xvFKNKHMCeQYPeZvLICCwyw2paE7Otwk6p
26
- uvbg2Ks5ykXsbk5i6vxDoeeOLvmxCqI6m+tHb8v7VZtmwRJm8so0eSX0WvTaKnIf
27
- CAn1bVUggczVdNoBXw9WAILKyw9bvh3Ft740XZrR74sd+m2pGwjCaM8hzLvrVbGP
28
- DyYhlBeRWyQKQ0WDIsiTSRhzK8HwSTUWjvPwx7SEdIU/HZgyrk0ETObKPakVu6bH
29
- kAyiRqgxF4dJviwtqI7mZIomWL63+kXLgjOjMe1SHxfIPo/0ji6+r1p4KYa7o41v
30
- fwIwU1MKlFBdsjkd
22
+ OTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSfK8MtR62mQ6oN
23
+ yoX/VKJzFjLSVDANBgkqhkiG9w0BAQsFAAOCAQEAXhT/LpMArF3JRcZSRkJDY+dU
24
+ GKCRqOefi2iydqh1yIqXyTA9PGR1w5O6O+WS1FvF+sHCwh8fFjCuStg2L8V2RSeo
25
+ aDtfZ5s80sL8wRFxg3kek69cBuI6ozU+rf9DaXlMES4i8+zASsdv9Y4a2BsbhEdE
26
+ 9AtuMcWn5a45TOO0S4Q8OuV0v705V38Ow15J2RDRvkFRySt+//8/Vd57XAJxPXU0
27
+ k/QvZU05f6HMYBrPogJgIzHC/C5N/yeE4BVEuBDn+10Zb1iu3aDk8sd0uMgukCY8
28
+ TUmlP5A6NeGdeDJIoLgromAKs+nvI7TWzhQq9ODs51XhxgUFRCvBqUTpjTQigw==
31
29
  -----END CERTIFICATE-----
32
- date: 2023-10-24 00:00:00.000000000 Z
30
+ date: 2023-11-12 00:00:00.000000000 Z
33
31
  dependencies:
34
32
  - !ruby/object:Gem::Dependency
35
33
  name: zeitwerk
@@ -454,6 +452,7 @@ files:
454
452
  - checksums/rodbot-0.3.2.gem.sha512
455
453
  - checksums/rodbot-0.3.3.gem.sha512
456
454
  - checksums/rodbot-0.3.4.gem.sha512
455
+ - checksums/rodbot-0.4.0.gem.sha512
457
456
  - doc/rodbot.afphoto
458
457
  - doc/rodbot.avif
459
458
  - exe/rodbot
@@ -573,7 +572,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
573
572
  - !ruby/object:Gem::Version
574
573
  version: '0'
575
574
  requirements: []
576
- rubygems_version: 3.4.21
575
+ rubygems_version: 3.4.22
577
576
  signing_key:
578
577
  specification_version: 4
579
578
  summary: Minimalistic framework to build chat bots on top of a Roda backend
metadata.gz.sig CHANGED
Binary file