yake 0.1.2 → 0.2.1

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: 66fbefc1075634cd8d1e600c992aef045c440a19715f66296695b3cc0c38d45a
4
- data.tar.gz: 9d629c68d1ed720382aacefb67608112b404e72488fd6dc4a8b3264cc9b66f56
3
+ metadata.gz: d97920003245ea42fec1eb6c56d1addc53a743e8a21540f51a86719fb3fe69aa
4
+ data.tar.gz: 34f51c677d95df8c6773122838815bfd9cf6124177d03192b5f15cc591ff92d1
5
5
  SHA512:
6
- metadata.gz: 10c73224492b43a8ec5bbd23d3514e3e6dcf7cf4a8a7158f1f98d1ec9fc013ac7bc4b87084f71a10140466890d6f4da2be27c6e46a172d8c44cc36b691b9f475
7
- data.tar.gz: edde64eb9832f62bb4af5730561b314a0daff1b0bed201e1d27cb3a33628ae1922a528fedb2e69444e87d404717e3350dbf1a1b92318ad2da407c303bf9c54a2
6
+ metadata.gz: 900588eb497598196b0081702bf1ac176b0a88167c1c316414887bf56a7f1f5ffe3d746e7f2760ae06f07080242de9cf1fe519f35d9b2bf221aae04842c18b7b
7
+ data.tar.gz: 9e01f2b55927a2430138556a008353cb22c8405027f97c3dcd3ac566d6942f0ffefb0281df9d290726689738403278a84c682f5fe761d8d21f8998872a8fab5b
data/README.md CHANGED
@@ -88,6 +88,17 @@ This feature can be disabled by adding a declaration in your handler file:
88
88
  logging :off
89
89
  ```
90
90
 
91
+ Include `Yake::Logger` on a class to access this logger:
92
+
93
+ ```ruby
94
+ class Fizz
95
+ include Yake::Logger
96
+ end
97
+
98
+ Fizz.new.logger == Yake.logger
99
+ # => true
100
+ ```
101
+
91
102
  #### API Routes
92
103
 
93
104
  A common use of Lambda functions is as a proxy for API Gateway. Oftentimes users will deploy a single Lambda function to handle all requests coming from API Gateway.
@@ -97,6 +108,10 @@ Requiring the `yake/api` module will add the API-specific DSL into your handler.
97
108
  Define API routes using Sinatra-like syntax
98
109
 
99
110
  ```ruby
111
+ any "/…" do |event|
112
+ # Handle 'ANY /…' route key events
113
+ end
114
+
100
115
  delete "/…" do |event|
101
116
  # Handle 'DELETE /…' route key events
102
117
  end
@@ -142,7 +157,7 @@ respond 200, { ok: true }.to_json, "x-extra-header" => "buzz"
142
157
  # {
143
158
  # "statusCode" => 200,
144
159
  # "body" => '{"ok":true}',
145
- # "headers" => { "x-extra-header" => "fizz" }
160
+ # "headers" => { "x-extra-header" => "buzz" }
146
161
  # }
147
162
  ```
148
163
 
data/lib/yake/api.rb CHANGED
@@ -55,6 +55,12 @@ module Yake
55
55
  (@headers ||= {}).update(headers)
56
56
  end
57
57
 
58
+ ##
59
+ # Define ANY route
60
+ def any(path, &block)
61
+ define_singleton_method("ANY #{ path }") { |*args| instance_exec(*args, &block) }
62
+ end
63
+
58
64
  ##
59
65
  # Define DELETE route
60
66
  def delete(path, &block)
data/lib/yake/dsl.rb CHANGED
@@ -10,15 +10,15 @@ module Yake
10
10
  # Lambda handler task wrapper
11
11
  def handler(name, &block)
12
12
  define_method(name) do |event:nil, context:nil|
13
- Yake.logger.nil? ? yield(event, context) : Yake.logger.wrap(event, context, &block)
13
+ Yake.wrap(event, context, &block)
14
14
  end
15
15
  end
16
16
 
17
17
  ##
18
18
  # Turn logging on/off
19
- def logging(switch, logdev = $stdout, **options)
19
+ def logging(switch, logger = nil)
20
20
  if switch == :on
21
- Yake.logger = Yake::Logger.new(logdev)
21
+ Yake.logger = logger
22
22
  elsif switch == :off
23
23
  Yake.logger = ::Logger.new(nil)
24
24
  else
@@ -29,4 +29,3 @@ module Yake
29
29
  end
30
30
 
31
31
  extend Yake::DSL
32
- Yake.logger = Yake::Logger.new
data/lib/yake/logger.rb CHANGED
@@ -4,33 +4,42 @@ require "json"
4
4
  require "logger"
5
5
 
6
6
  module Yake
7
- class Logger < ::Logger
8
- def initialize(logdev = $stdout, *)
9
- super
10
- @progname = "-"
11
- @formatter = LambdaFormatter.new
7
+ module Logger
8
+ attr_accessor :logger
9
+
10
+ def logger
11
+ @logger ||= Yake.logger
12
12
  end
13
13
 
14
- def wrap(event = nil, context = nil, &block)
15
- @progname = "RequestId: #{ context.aws_request_id }" if context.respond_to?(:aws_request_id)
16
- info("EVENT #{ event.to_json }")
17
- yield(event, context).tap { |res| info("RETURN #{ res.to_json }") }
18
- ensure
19
- @progname = "-"
14
+ class << self
15
+ def new(logdev = $stdout, **params)
16
+ ::Logger.new(logdev, formatter: Formatter.new, **params)
17
+ end
20
18
  end
21
- end
22
19
 
23
- class LambdaFormatter < ::Logger::Formatter
24
- Format = "%s %s %s\n"
20
+ class Formatter < ::Logger::Formatter
21
+ Format = "%s %s %s\n"
25
22
 
26
- def call(severity, time, progname, msg)
27
- Format % [ severity, progname, msg2str(msg).strip ]
23
+ def call(severity, time, progname, msg)
24
+ Format % [ severity, progname.nil? ? "-" : "RequestId: #{ progname }", msg2str(msg).strip ]
25
+ end
28
26
  end
29
27
  end
30
28
 
31
- module Loggable
29
+ class << self
32
30
  attr_accessor :logger
33
- end
34
31
 
35
- extend Loggable
32
+ def logger
33
+ @logger ||= Logger.new
34
+ end
35
+
36
+ def wrap(event = nil, context = nil, &block)
37
+ original_progname = logger.progname
38
+ logger.progname = context&.aws_request_id
39
+ logger.info("EVENT #{ event.to_json }")
40
+ yield(event, context).tap { |res| logger.info("RETURN #{ res.to_json }") }
41
+ ensure
42
+ logger.progname = original_progname
43
+ end
44
+ end
36
45
  end
data/lib/yake/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yake
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Mancevice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-29 00:00:00.000000000 Z
11
+ date: 2021-05-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: