Skip to content

Commit befdb0e

Browse files
Merge pull request #51 from onrampfunds/support-ruby-3.2-fix
Support ruby 3.2
2 parents 7b52a15 + 93f163d commit befdb0e

File tree

15 files changed

+1899
-1564
lines changed

15 files changed

+1899
-1564
lines changed

.tool-versions

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
ruby 2.7.6
1+
ruby 3.2.0
2+
nodejs 18.12.1
3+
yarn 1.22.4

README.md

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,6 @@ environment variable, it will have precedence over the `serverless.yml` file:
125125
CROSS_COMPILE_EXTENSIONS=false serverless package
126126
```
127127

128-
By default, native extensions will be built using the lambci/lambda:build-ruby2.5
129-
docker image, which should accurately reflect the AWS Lambda ruby environment.
130-
To use a different image, override it in your `serverless.yml` file:
131-
132-
```
133-
custom:
134-
rubyPackage:
135-
dockerImage: lambci/lambda:build-ruby2.7
136-
```
137-
138-
139-
140128
## Development
141129

142130
To work on this plugin, you should first run the following in your local directory:
@@ -152,7 +140,8 @@ yarn test # run the automated test suite
152140
### Troubleshooting the demo_service
153141

154142
* Make sure the version of bundler specified in the demo_service Gemfile.lock
155-
is compatible with the version installed in the lambci/lambda:build-ruby2.5 image.
143+
is compatible with the version installed in the `amazon/aws-lambda-ruby:3.2`
144+
image.
156145

157146
* Make sure you can invoke the function n in the docker image:
158147

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
---
22
BUNDLE_PATH: "vendor/bundle"
3+
BUNDLE_BUILD__FFI: "--disable-system-libffi"

__tests__/demo_service/Gemfile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
source "https://rubygems.org"
44

5-
gem "redis-namespace"
6-
gem "http"
5+
gem 'redis-namespace'
6+
gem 'http' # exercises dependency on libffi
7+
gem 'psych' # exercises dependency on libyaml
78

89
group :development do
9-
gem "rspec-core"
10-
gem "nio4r"
10+
gem 'rspec-core'
11+
gem 'nio4r'
1112
end
Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,55 @@
11
GEM
22
remote: https://rubygems.org/
33
specs:
4-
addressable (2.6.0)
5-
public_suffix (>= 2.0.2, < 4.0)
6-
domain_name (0.5.20180417)
4+
addressable (2.8.4)
5+
public_suffix (>= 2.0.2, < 6.0)
6+
connection_pool (2.4.1)
7+
domain_name (0.5.20190701)
78
unf (>= 0.0.5, < 1.0.0)
8-
http (4.1.1)
9-
addressable (~> 2.3)
9+
ffi (1.15.5)
10+
ffi-compiler (1.0.1)
11+
ffi (>= 1.0.0)
12+
rake
13+
http (5.1.1)
14+
addressable (~> 2.8)
1015
http-cookie (~> 1.0)
11-
http-form_data (~> 2.0)
12-
http_parser.rb (~> 0.6.0)
13-
http-cookie (1.0.3)
16+
http-form_data (~> 2.2)
17+
llhttp-ffi (~> 0.4.0)
18+
http-cookie (1.0.5)
1419
domain_name (~> 0.5)
15-
http-form_data (2.1.1)
16-
http_parser.rb (0.6.0)
17-
nio4r (2.3.1)
18-
public_suffix (3.0.3)
19-
redis (4.1.0)
20-
redis-namespace (1.6.0)
21-
redis (>= 3.0.4)
22-
rspec-core (3.8.0)
23-
rspec-support (~> 3.8.0)
24-
rspec-support (3.8.0)
20+
http-form_data (2.3.0)
21+
llhttp-ffi (0.4.0)
22+
ffi-compiler (~> 1.0)
23+
rake (~> 13.0)
24+
nio4r (2.5.9)
25+
psych (5.0.1)
26+
stringio
27+
public_suffix (5.0.1)
28+
rake (13.0.6)
29+
redis (5.0.6)
30+
redis-client (>= 0.9.0)
31+
redis-client (0.14.1)
32+
connection_pool
33+
redis-namespace (1.11.0)
34+
redis (>= 4)
35+
rspec-core (3.12.2)
36+
rspec-support (~> 3.12.0)
37+
rspec-support (3.12.1)
38+
stringio (3.0.4)
2539
unf (0.1.4)
2640
unf_ext
27-
unf_ext (0.0.7.5)
28-
unf_ext (0.0.7.5-x64-mingw32)
41+
unf_ext (0.0.8.2)
2942

3043
PLATFORMS
31-
ruby
32-
x64-mingw32
44+
arm64-darwin-21
45+
x86_64-linux
3346

3447
DEPENDENCIES
3548
http
3649
nio4r
50+
psych
3751
redis-namespace
3852
rspec-core
3953

4054
BUNDLED WITH
41-
2.1.4
55+
2.4.1
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
1-
docker run --rm -v $(dirname $(realpath $0)):/var/task lambci/lambda:build-ruby2.5 ruby -I. -rhandler -e "puts hello(event:{},context:{})"
1+
docker run --rm \
2+
--volume $(pwd):/var/task \
3+
--env RUBYLIB=/var/task \
4+
--entrypoint '/var/lang/bin/ruby' \
5+
$RUBY_IMAGE \
6+
'-e require "handler"; puts hello(event:{},context:{})'
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
service: demo
2+
provider:
3+
name: aws
4+
runtime: ruby2.7
5+
package:
6+
include:
7+
- handler.rb
8+
- lib/**
9+
exclude:
10+
- node_modules
11+
functions:
12+
hello:
13+
handler: handler.hello
14+
events:
15+
- http:
16+
path: /
17+
method: get
18+
plugins:
19+
- serverless-ruby-package
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
service: demo
2+
provider:
3+
name: aws
4+
runtime: ruby3.2
5+
package:
6+
include:
7+
- handler.rb
8+
- lib/**
9+
exclude:
10+
- node_modules
11+
functions:
12+
hello:
13+
handler: handler.hello
14+
events:
15+
- http:
16+
path: /
17+
method: get
18+
plugins:
19+
- serverless-ruby-package

__tests__/index.test.js

Lines changed: 77 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -81,52 +81,82 @@ test("include files for each gem needed by default bundler group - excluding .gi
8181
"handler.rb",
8282
"lib/**",
8383
"vendor/bundle/bundler/**",
84-
85-
"vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/**",
86-
"!vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/.git/**",
87-
"!vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/test/**",
88-
"!vendor/bundle/ruby/2.5.0/gems/addressable-2.6.0/spec/**",
89-
"vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/**",
90-
"!vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/.git/**",
91-
"!vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/test/**",
92-
"!vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/spec/**",
93-
"vendor/bundle/ruby/2.5.0/gems/http-4.1.1/**",
94-
"!vendor/bundle/ruby/2.5.0/gems/http-4.1.1/.git/**",
95-
"!vendor/bundle/ruby/2.5.0/gems/http-4.1.1/test/**",
96-
"!vendor/bundle/ruby/2.5.0/gems/http-4.1.1/spec/**",
97-
"vendor/bundle/ruby/2.5.0/gems/http-cookie-1.0.3/**",
98-
"!vendor/bundle/ruby/2.5.0/gems/http-cookie-1.0.3/.git/**",
99-
"!vendor/bundle/ruby/2.5.0/gems/http-cookie-1.0.3/test/**",
100-
"!vendor/bundle/ruby/2.5.0/gems/http-cookie-1.0.3/spec/**",
101-
"vendor/bundle/ruby/2.5.0/gems/http-form_data-2.1.1/**",
102-
"!vendor/bundle/ruby/2.5.0/gems/http-form_data-2.1.1/.git/**",
103-
"!vendor/bundle/ruby/2.5.0/gems/http-form_data-2.1.1/test/**",
104-
"!vendor/bundle/ruby/2.5.0/gems/http-form_data-2.1.1/spec/**",
105-
"vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/**",
106-
"vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/http_parser.rb-0.6.0/**",
107-
"!vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/.git/**",
108-
"!vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/test/**",
109-
"!vendor/bundle/ruby/2.5.0/gems/http_parser.rb-0.6.0/spec/**",
110-
"vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/**",
111-
"!vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/.git/**",
112-
"!vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/test/**",
113-
"!vendor/bundle/ruby/2.5.0/gems/public_suffix-3.0.3/spec/**",
114-
"vendor/bundle/ruby/2.5.0/gems/redis-4.1.0/**",
115-
"!vendor/bundle/ruby/2.5.0/gems/redis-4.1.0/.git/**",
116-
"!vendor/bundle/ruby/2.5.0/gems/redis-4.1.0/test/**",
117-
"!vendor/bundle/ruby/2.5.0/gems/redis-4.1.0/spec/**",
118-
"vendor/bundle/ruby/2.5.0/gems/redis-namespace-1.6.0/**",
119-
"!vendor/bundle/ruby/2.5.0/gems/redis-namespace-1.6.0/.git/**",
120-
"!vendor/bundle/ruby/2.5.0/gems/redis-namespace-1.6.0/test/**",
121-
"!vendor/bundle/ruby/2.5.0/gems/redis-namespace-1.6.0/spec/**",
122-
"vendor/bundle/ruby/2.5.0/gems/unf-0.1.4/**",
123-
"!vendor/bundle/ruby/2.5.0/gems/unf-0.1.4/.git/**",
124-
"!vendor/bundle/ruby/2.5.0/gems/unf-0.1.4/test/**",
125-
"!vendor/bundle/ruby/2.5.0/gems/unf-0.1.4/spec/**",
126-
"vendor/bundle/ruby/2.5.0/gems/unf_ext-0.0.7.5/**",
127-
"vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/unf_ext-0.0.7.5/**",
128-
"!vendor/bundle/ruby/2.5.0/gems/unf_ext-0.0.7.5/.git/**",
129-
"!vendor/bundle/ruby/2.5.0/gems/unf_ext-0.0.7.5/test/**",
130-
"!vendor/bundle/ruby/2.5.0/gems/unf_ext-0.0.7.5/spec/**",
84+
"vendor/bundle/ruby/3.2.0/gems/addressable-2.8.4/**",
85+
"!vendor/bundle/ruby/3.2.0/gems/addressable-2.8.4/.git/**",
86+
"!vendor/bundle/ruby/3.2.0/gems/addressable-2.8.4/test/**",
87+
"!vendor/bundle/ruby/3.2.0/gems/addressable-2.8.4/spec/**",
88+
"vendor/bundle/ruby/3.2.0/gems/connection_pool-2.4.1/**",
89+
"!vendor/bundle/ruby/3.2.0/gems/connection_pool-2.4.1/.git/**",
90+
"!vendor/bundle/ruby/3.2.0/gems/connection_pool-2.4.1/test/**",
91+
"!vendor/bundle/ruby/3.2.0/gems/connection_pool-2.4.1/spec/**",
92+
"vendor/bundle/ruby/3.2.0/gems/domain_name-0.5.20190701/**",
93+
"!vendor/bundle/ruby/3.2.0/gems/domain_name-0.5.20190701/.git/**",
94+
"!vendor/bundle/ruby/3.2.0/gems/domain_name-0.5.20190701/test/**",
95+
"!vendor/bundle/ruby/3.2.0/gems/domain_name-0.5.20190701/spec/**",
96+
"vendor/bundle/ruby/3.2.0/gems/ffi-1.15.5/**",
97+
"vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/ffi-1.15.5/**",
98+
"!vendor/bundle/ruby/3.2.0/gems/ffi-1.15.5/.git/**",
99+
"!vendor/bundle/ruby/3.2.0/gems/ffi-1.15.5/test/**",
100+
"!vendor/bundle/ruby/3.2.0/gems/ffi-1.15.5/spec/**",
101+
"vendor/bundle/ruby/3.2.0/gems/ffi-compiler-1.0.1/**",
102+
"!vendor/bundle/ruby/3.2.0/gems/ffi-compiler-1.0.1/.git/**",
103+
"!vendor/bundle/ruby/3.2.0/gems/ffi-compiler-1.0.1/test/**",
104+
"!vendor/bundle/ruby/3.2.0/gems/ffi-compiler-1.0.1/spec/**",
105+
"vendor/bundle/ruby/3.2.0/gems/http-5.1.1/**",
106+
"!vendor/bundle/ruby/3.2.0/gems/http-5.1.1/.git/**",
107+
"!vendor/bundle/ruby/3.2.0/gems/http-5.1.1/test/**",
108+
"!vendor/bundle/ruby/3.2.0/gems/http-5.1.1/spec/**",
109+
"vendor/bundle/ruby/3.2.0/gems/http-cookie-1.0.5/**",
110+
"!vendor/bundle/ruby/3.2.0/gems/http-cookie-1.0.5/.git/**",
111+
"!vendor/bundle/ruby/3.2.0/gems/http-cookie-1.0.5/test/**",
112+
"!vendor/bundle/ruby/3.2.0/gems/http-cookie-1.0.5/spec/**",
113+
"vendor/bundle/ruby/3.2.0/gems/http-form_data-2.3.0/**",
114+
"!vendor/bundle/ruby/3.2.0/gems/http-form_data-2.3.0/.git/**",
115+
"!vendor/bundle/ruby/3.2.0/gems/http-form_data-2.3.0/test/**",
116+
"!vendor/bundle/ruby/3.2.0/gems/http-form_data-2.3.0/spec/**",
117+
"vendor/bundle/ruby/3.2.0/gems/llhttp-ffi-0.4.0/**",
118+
"vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/llhttp-ffi-0.4.0/**",
119+
"!vendor/bundle/ruby/3.2.0/gems/llhttp-ffi-0.4.0/.git/**",
120+
"!vendor/bundle/ruby/3.2.0/gems/llhttp-ffi-0.4.0/test/**",
121+
"!vendor/bundle/ruby/3.2.0/gems/llhttp-ffi-0.4.0/spec/**",
122+
"vendor/bundle/ruby/3.2.0/gems/psych-5.0.1/**",
123+
"vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/psych-5.0.1/**",
124+
"!vendor/bundle/ruby/3.2.0/gems/psych-5.0.1/.git/**",
125+
"!vendor/bundle/ruby/3.2.0/gems/psych-5.0.1/test/**",
126+
"!vendor/bundle/ruby/3.2.0/gems/psych-5.0.1/spec/**",
127+
"vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.1/**",
128+
"!vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.1/.git/**",
129+
"!vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.1/test/**",
130+
"!vendor/bundle/ruby/3.2.0/gems/public_suffix-5.0.1/spec/**",
131+
"vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/**",
132+
"!vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/.git/**",
133+
"!vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/test/**",
134+
"!vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/spec/**",
135+
"vendor/bundle/ruby/3.2.0/gems/redis-5.0.6/**",
136+
"!vendor/bundle/ruby/3.2.0/gems/redis-5.0.6/.git/**",
137+
"!vendor/bundle/ruby/3.2.0/gems/redis-5.0.6/test/**",
138+
"!vendor/bundle/ruby/3.2.0/gems/redis-5.0.6/spec/**",
139+
"vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/**",
140+
"!vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/.git/**",
141+
"!vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/test/**",
142+
"!vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/spec/**",
143+
"vendor/bundle/ruby/3.2.0/gems/redis-namespace-1.11.0/**",
144+
"!vendor/bundle/ruby/3.2.0/gems/redis-namespace-1.11.0/.git/**",
145+
"!vendor/bundle/ruby/3.2.0/gems/redis-namespace-1.11.0/test/**",
146+
"!vendor/bundle/ruby/3.2.0/gems/redis-namespace-1.11.0/spec/**",
147+
"vendor/bundle/ruby/3.2.0/gems/stringio-3.0.4/**",
148+
"vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/stringio-3.0.4/**",
149+
"!vendor/bundle/ruby/3.2.0/gems/stringio-3.0.4/.git/**",
150+
"!vendor/bundle/ruby/3.2.0/gems/stringio-3.0.4/test/**",
151+
"!vendor/bundle/ruby/3.2.0/gems/stringio-3.0.4/spec/**",
152+
"vendor/bundle/ruby/3.2.0/gems/unf-0.1.4/**",
153+
"!vendor/bundle/ruby/3.2.0/gems/unf-0.1.4/.git/**",
154+
"!vendor/bundle/ruby/3.2.0/gems/unf-0.1.4/test/**",
155+
"!vendor/bundle/ruby/3.2.0/gems/unf-0.1.4/spec/**",
156+
"vendor/bundle/ruby/3.2.0/gems/unf_ext-0.0.8.2/**",
157+
"vendor/bundle/ruby/3.2.0/extensions/x86_64-linux/3.2.0/unf_ext-0.0.8.2/**",
158+
"!vendor/bundle/ruby/3.2.0/gems/unf_ext-0.0.8.2/.git/**",
159+
"!vendor/bundle/ruby/3.2.0/gems/unf_ext-0.0.8.2/test/**",
160+
"!vendor/bundle/ruby/3.2.0/gems/unf_ext-0.0.8.2/spec/**"
131161
]);
132162
});

0 commit comments

Comments
 (0)