lambda_punch 1.0.3 → 1.1.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: 806b9121fb13c00ae8a5e38e39a48cb2f8609aad192f5f3bc32b857032cfd0fa
4
- data.tar.gz: 8426e0efa1a7c5f44d79445ea025054f8346f4264983878fc608f91efbcca387
3
+ metadata.gz: edd0fcb9d2a3d808ef2f2209f7d2b9c344e372fecb918bd6d2e25dfe375b3c55
4
+ data.tar.gz: 4a0972320ed7f3734e43b9cfe9a9fde1134a2148b44532914361c99bc4b1f4fa
5
5
  SHA512:
6
- metadata.gz: 0ec52eb4a0f53d3958080a34ed8b5d07e0f0f93e326d1e6e78dad7167ba8c87b5c60074e49d3a7219903d764ff9569b4f94ff3948f5e546e74a380b338025d94
7
- data.tar.gz: a8c0b72ccc54367fd683996a0b24d586632e934be647b1f000f8c2bb83e31aac6c14f6c31b539356ae94eb14a55aa06fe9d1698d40a1123336b927fe3e40b164
6
+ metadata.gz: 07bb2eccf539f0322316520fb0b45ee95110e7e6d47165cc3460542de6629c6f72a616901616fbf93a8fc75fb6fa1208619fcf17e80c059c0f204a21893cc261
7
+ data.tar.gz: d1414ca50a4bcaca75dd346eab56b360d447f8f7e31736e4fe2a9d62ffafcd79cf9f4f77c5b8b687ce8eba1b3405daa34e06f576aebd64fd5dfe38076fcadd19
@@ -0,0 +1 @@
1
+ FROM mcr.microsoft.com/devcontainers/ruby:3.1
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "lambda_punch",
3
+ "build": {
4
+ "dockerfile": "Dockerfile"
5
+ },
6
+ "features": {
7
+ "ghcr.io/devcontainers/features/sshd:latest": {}
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "settings": {
12
+ "editor.formatOnSave": true
13
+ },
14
+ "extensions": []
15
+ }
16
+ },
17
+ "postCreateCommand": ".devcontainer/postCreate.sh",
18
+ "remoteUser": "vscode"
19
+ }
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ sudo rm -rf /opt
5
+ sudo mkdir /opt
6
+ sudo chown -R $USER /opt
@@ -2,16 +2,15 @@ name: Test
2
2
  on: [push]
3
3
  jobs:
4
4
  test:
5
- runs-on: ubuntu-latest
5
+ runs-on: ubuntu-20.04
6
6
  steps:
7
7
  - name: Checkout
8
- uses: actions/checkout@v2
9
- - name: Bootstrap
10
- run: |
11
- ./bin/bootstrap
12
- - name: Setup
13
- run: |
14
- ./bin/setup
15
- - name: Test
16
- run: |
17
- ./bin/test
8
+ uses: actions/checkout@v3
9
+ - name: Setup & Test
10
+ uses: devcontainers/ci@v0.3
11
+ with:
12
+ env: |
13
+ CI
14
+ runCmd: |
15
+ ./bin/setup
16
+ ./bin/test
data/CHANGELOG.md CHANGED
@@ -1,8 +1,20 @@
1
+ ## [1.1.1] - 2023-04-16
2
+
3
+ ### Fixed
4
+
5
+ - The `lambda_punch` install file.
6
+
7
+ ## [1.1.0] - 2023-04-16
8
+
9
+ ### Added
10
+
11
+ - New `lambda_punch` install interface.
12
+
1
13
  ## [1.0.3] - 2021-10-27
2
14
 
3
15
  ### Added
4
16
 
5
- -
17
+ - Any Timeout Gem. Tempfile Location Interface
6
18
 
7
19
  ### Changed
8
20
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lambda_punch (1.0.3)
4
+ lambda_punch (1.1.1)
5
5
  concurrent-ruby
6
6
  rake
7
7
  rb-inotify
@@ -74,7 +74,7 @@ GEM
74
74
  concurrent-ruby (1.1.9)
75
75
  crass (1.0.6)
76
76
  erubi (1.10.0)
77
- ffi (1.15.4)
77
+ ffi (1.15.5)
78
78
  globalid (0.5.2)
79
79
  activesupport (>= 5.0)
80
80
  i18n (1.8.10)
@@ -87,11 +87,13 @@ GEM
87
87
  marcel (1.0.2)
88
88
  method_source (1.0.0)
89
89
  mini_mime (1.1.2)
90
+ mini_portile2 (2.6.1)
90
91
  minitest (5.14.4)
91
92
  minitest-focus (1.3.1)
92
93
  minitest (>= 4, < 6)
93
94
  nio4r (2.5.8)
94
- nokogiri (1.12.5-x86_64-linux)
95
+ nokogiri (1.12.5)
96
+ mini_portile2 (~> 2.6.1)
95
97
  racc (~> 1.4)
96
98
  pry (0.14.1)
97
99
  coderay (~> 1.1)
@@ -137,7 +139,7 @@ GEM
137
139
  activesupport (>= 4.0)
138
140
  sprockets (>= 3.0.0)
139
141
  thor (1.1.0)
140
- timeout (0.2.0)
142
+ timeout (0.3.2)
141
143
  tzinfo (2.0.4)
142
144
  concurrent-ruby (~> 1.0)
143
145
  websocket-driver (0.7.5)
@@ -146,6 +148,8 @@ GEM
146
148
  zeitwerk (2.5.1)
147
149
 
148
150
  PLATFORMS
151
+ aarch64-linux
152
+ arm64-darwin-22
149
153
  x86_64-linux
150
154
 
151
155
  DEPENDENCIES
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/bin/setup CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/bin/sh
2
2
  set -e
3
3
 
4
- docker-compose run \
5
- lambdapunch \
6
- ./bin/_setup
4
+ echo '== Installing dependencies =='
5
+ bundle config set --local path 'vendor/bundle'
6
+ bundle install
data/bin/test CHANGED
@@ -1,6 +1,4 @@
1
1
  #!/bin/sh
2
2
  set -e
3
3
 
4
- docker-compose run \
5
- lambdapunch \
6
- ./bin/_test
4
+ bundle exec rake test
data/exe/lambda_punch ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+
6
+ spec = Gem::Specification.find_by_name 'lambda_punch'
7
+ load "#{spec.gem_dir}/lib/lambda_punch/tasks/install.rake"
8
+
9
+ command = ARGV[0] || 'install'
10
+
11
+ Rake::Task["lambda_punch:#{command}"].invoke
@@ -1,3 +1,3 @@
1
1
  module LambdaPunch
2
- VERSION = "1.0.3"
2
+ VERSION = "1.1.1"
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.1
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,28 +111,27 @@ 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:
119
+ - ".devcontainer/Dockerfile"
120
+ - ".devcontainer/devcontainer.json"
121
+ - ".devcontainer/postCreate.sh"
118
122
  - ".github/workflows/test.yml"
119
123
  - ".gitignore"
120
124
  - CHANGELOG.md
121
125
  - CODE_OF_CONDUCT.md
122
- - Dockerfile
123
126
  - Gemfile
124
127
  - Gemfile.lock
125
128
  - LICENSE.txt
126
129
  - README.md
127
130
  - Rakefile
128
- - bin/_setup
129
- - bin/_test
130
- - bin/bootstrap
131
131
  - bin/console
132
- - bin/run
133
132
  - bin/setup
134
133
  - bin/test
135
- - docker-compose.yml
134
+ - exe/lambda_punch
136
135
  - lambda_punch.gemspec
137
136
  - lib/lambda_punch.rb
138
137
  - lib/lambda_punch/api.rb
@@ -154,7 +153,7 @@ metadata:
154
153
  homepage_uri: https://github.com/customink/lambda_punch
155
154
  source_code_uri: https://github.com/customink/lambda_punch
156
155
  changelog_uri: https://github.com/customink/lambda_punch/blob/main/CHANGELOG.md
157
- post_install_message:
156
+ post_install_message:
158
157
  rdoc_options: []
159
158
  require_paths:
160
159
  - lib
@@ -169,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
168
  - !ruby/object:Gem::Version
170
169
  version: '0'
171
170
  requirements: []
172
- rubygems_version: 3.1.2
173
- signing_key:
171
+ rubygems_version: 3.4.7
172
+ signing_key:
174
173
  specification_version: 4
175
174
  summary: 'LambdaPunch: Async Processing using Lambda Extensions'
176
175
  test_files: []
data/Dockerfile DELETED
@@ -1,2 +0,0 @@
1
- FROM public.ecr.aws/sam/build-ruby2.7
2
- WORKDIR /var/task
data/bin/_setup DELETED
@@ -1,6 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- echo '== Installing dependencies =='
5
- bundle config set --local path 'vendor/bundle'
6
- bundle install
data/bin/_test DELETED
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- bundle exec rake test
data/bin/bootstrap DELETED
@@ -1,6 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- echo '== Building containers =='
5
- docker pull public.ecr.aws/sam/build-ruby2.7
6
- docker-compose build
data/bin/run DELETED
@@ -1,6 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- docker-compose run \
5
- lambdapunch \
6
- $@
data/docker-compose.yml DELETED
@@ -1,10 +0,0 @@
1
- version: '3.7'
2
- services:
3
- lambdapunch:
4
- build:
5
- context: .
6
- dockerfile: Dockerfile
7
- environment:
8
- - CI=${CI}
9
- volumes:
10
- - ${PWD}:/var/task:delegated