lambda_punch 1.0.3 → 1.1.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: 806b9121fb13c00ae8a5e38e39a48cb2f8609aad192f5f3bc32b857032cfd0fa
4
- data.tar.gz: 8426e0efa1a7c5f44d79445ea025054f8346f4264983878fc608f91efbcca387
3
+ metadata.gz: ad3d3b5bc8d71f3ec550dc01f998e4df18c77b839b9dd4c44d010a08b5bf25d5
4
+ data.tar.gz: 106ecd9404fe6a570166f5a2dfc6e7654f427aec9fc1e77df2154d4031409982
5
5
  SHA512:
6
- metadata.gz: 0ec52eb4a0f53d3958080a34ed8b5d07e0f0f93e326d1e6e78dad7167ba8c87b5c60074e49d3a7219903d764ff9569b4f94ff3948f5e546e74a380b338025d94
7
- data.tar.gz: a8c0b72ccc54367fd683996a0b24d586632e934be647b1f000f8c2bb83e31aac6c14f6c31b539356ae94eb14a55aa06fe9d1698d40a1123336b927fe3e40b164
6
+ metadata.gz: e9526b2c0ec7490eeb323df242a0b2537cc3c783aad1c6bd622bdec58354abb1f5b0230833947ded1f8242eacd1d15625cc581a34e6d822e3343adc3732124cb
7
+ data.tar.gz: 105223ed92a8f3782e376f9d3d472d70d0a807a984a5f94425d3332450fae150dcf20c67771898741dc2134efa67c8db262dd8efb14ddfe89dc46d6cc2214870
data/CHANGELOG.md CHANGED
@@ -1,8 +1,14 @@
1
+ ## [1.1.0] - 2023-04-16
2
+
3
+ ### Added
4
+
5
+ - New `lambda_punch` install interface.
6
+
1
7
  ## [1.0.3] - 2021-10-27
2
8
 
3
9
  ### Added
4
10
 
5
- -
11
+ - Any Timeout Gem. Tempfile Location Interface
6
12
 
7
13
  ### Changed
8
14
 
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # 👊 LambdaPunch
6
6
 
7
- <a href="https://lamby.custominktech.com"><img src="https://user-images.githubusercontent.com/2381/59363668-89edeb80-8d03-11e9-9985-2ce14361b7e3.png" alt="Lamby: Simple Rails & AWS Lambda Integration using Rack." align="right" width="300" /></a>Asynchronous background job processing for AWS Lambda with Ruby using [Lambda Extensions](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html). Inspired by the [SuckerPunch](https://github.com/brandonhilkert/sucker_punch) gem but specifically tooled to work with Lambda's invoke model.
7
+ <a href="https://lamby.custominktech.com"><img src="https://raw.githubusercontent.com/customink/lamby/master/images/social2.png" alt="Lamby: Simple Rails & AWS Lambda Integration using Rack." align="right" width="450" style="margin-left:1rem;margin-bottom:1rem;" /></a>Asynchronous background job processing for AWS Lambda with Ruby using [Lambda Extensions](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html). Inspired by the [SuckerPunch](https://github.com/brandonhilkert/sucker_punch) gem but specifically tooled to work with Lambda's invoke model.
8
8
 
9
9
  **For a more robust background job solution, please consider using AWS SQS with the [Lambdakiq](https://github.com/customink/lambdakiq) gem. A drop-in replacement for [Sidekiq](https://github.com/mperham/sidekiq) when running Rails in AWS Lambda using the [Lamby](https://lamby.custominktech.com/) gem.**
10
10
 
@@ -18,35 +18,36 @@ The LambdaPunch extension process is very small and lean. It only requires a few
18
18
 
19
19
  ## 🎁 Installation
20
20
 
21
- Add this line to your project's `Gemfile` and then make sure to `bundle install` afterward.
21
+ Add this line to your project's `Gemfile` and then make sure to `bundle install` afterward. It is only needed in the `production` group.
22
22
 
23
23
  ```ruby
24
24
  gem 'lambda_punch'
25
25
  ```
26
26
 
27
- Now, within your application's handler file, make sure to start the LambdaPunch DRb server outside of your handler method. Within the handler method, add an `ensure` section that lets the extension process know the request is done.
27
+ Within your project or [Rails application's](https://lamby.custominktech.com/docs/anatomy) `Dockerfile`, add the following. Make sure you do this before you `COPY` your code. The idea is to implicitly use the default `USER root` since it needs permissions to create an `/opt/extensions` directory.
28
28
 
29
- ```ruby
30
- LambdaPunch.start_server!
31
-
32
- def handler(event:, context:)
33
- # ...
34
- ensure
35
- LambdaPunch.handled!(context)
36
- end
29
+ ```dockerfile
30
+ RUN gem install lambda_punch && lambda_punch install
37
31
  ```
38
32
 
39
- Within your project or [Rails application's](https://lamby.custominktech.com/docs/anatomy) `Dockerfile`, after you copy your code, add this `RUN` command to install the extension within your container's `/opt/extensions` directory.
33
+ Installation with AWS Lambda via the [Lamby](https://lamby.custominktech.com/) v4 (or higher) gem can be done using Lamby's `handled_proc` config. For example, appends these to your `config/environments/production.rb` file. Here we are ensuring that the LambdaPunch DRb server is running and that after each Lamby request we notify LambdaPunch.
40
34
 
41
- ```dockerfile
42
- RUN bundle exec rake lambda_punch:install
35
+ ```ruby
36
+ config.to_prepare { LambdaPunch.start_server! }
37
+ config.lamby.handled_proc = Proc.new do |_event, context|
38
+ LambdaPunch.handled!(context)
39
+ end
43
40
  ```
44
41
 
45
- If you are using `LambdaPunch` with a non-Rails project, add this to your Rake file
42
+ If you are using an older version of Lamby or a simple Ruby project with your own handler method, the installation would look something like this:
46
43
 
47
44
  ```ruby
48
- spec = Gem::Specification.find_by_name 'lambda_punch'
49
- load "#{spec.gem_dir}/lib/lambda_punch/tasks/install.rake"
45
+ LambdaPunch.start_server!
46
+ def handler(event:, context:)
47
+ # ...
48
+ ensure
49
+ LambdaPunch.handled!(context)
50
+ end
50
51
  ```
51
52
 
52
53
  ## 🧰 Usage
@@ -59,12 +60,11 @@ LambdaPunch.push do
59
60
  end
60
61
  ```
61
62
 
62
- For example, if you are using Rails with AWS Lambda via the [Lamby](https://lamby.custominktech.com/) gem along with [New Relic APM](https://dev.to/aws-heroes/using-new-relic-apm-with-rails-on-aws-lambda-51gi) here is how your handler function might appear to ensure their metrics are flushed after each request.
63
+ A common use case would be to ensure the [New Relic APM](https://dev.to/aws-heroes/using-new-relic-apm-with-rails-on-aws-lambda-51gi) flushes its data after each request. Using Lamby in your `config/environments/production.rb` file would look like this:
63
64
 
64
65
  ```ruby
65
- def handler(event:, context:)
66
- Lamby.handler $app, event, context
67
- ensure
66
+ config.to_prepare { LambdaPunch.start_server! }
67
+ config.lamby.handled_proc = Proc.new do |_event, context|
68
68
  LambdaPunch.push { NewRelic::Agent.agent.flush_pipe_data }
69
69
  LambdaPunch.handled!(context)
70
70
  end
data/exe/lambda_punch ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+
6
+ load "#{spec.gem_dir}/lib/lambda_punch/tasks/install.rake"
7
+
8
+ command = ARGV[0] || 'install'
9
+
10
+ Rake::Task["lambda_punch:#{command}"].invoke
@@ -1,3 +1,3 @@
1
1
  module LambdaPunch
2
- VERSION = "1.0.3"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lambda_punch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-28 00:00:00.000000000 Z
11
+ date: 2023-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -111,7 +111,8 @@ dependencies:
111
111
  description: 'LambdaPunch: Async Processing using Lambda Extensions'
112
112
  email:
113
113
  - ken@metaskills.net
114
- executables: []
114
+ executables:
115
+ - lambda_punch
115
116
  extensions: []
116
117
  extra_rdoc_files: []
117
118
  files:
@@ -133,6 +134,7 @@ files:
133
134
  - bin/setup
134
135
  - bin/test
135
136
  - docker-compose.yml
137
+ - exe/lambda_punch
136
138
  - lambda_punch.gemspec
137
139
  - lib/lambda_punch.rb
138
140
  - lib/lambda_punch/api.rb
@@ -154,7 +156,7 @@ metadata:
154
156
  homepage_uri: https://github.com/customink/lambda_punch
155
157
  source_code_uri: https://github.com/customink/lambda_punch
156
158
  changelog_uri: https://github.com/customink/lambda_punch/blob/main/CHANGELOG.md
157
- post_install_message:
159
+ post_install_message:
158
160
  rdoc_options: []
159
161
  require_paths:
160
162
  - lib
@@ -169,8 +171,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
171
  - !ruby/object:Gem::Version
170
172
  version: '0'
171
173
  requirements: []
172
- rubygems_version: 3.1.2
173
- signing_key:
174
+ rubygems_version: 3.4.7
175
+ signing_key:
174
176
  specification_version: 4
175
177
  summary: 'LambdaPunch: Async Processing using Lambda Extensions'
176
178
  test_files: []