Skip to content

Commit a308ce2

Browse files
authored
Merge pull request #1 from joshuaflanagan/master
Merge Ruby 3.3 support from joshuaflanagan repo to ShippingEasy repo
2 parents b5744f0 + 9f5097e commit a308ce2

11 files changed

Lines changed: 117 additions & 101 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
/node_modules
2+
.bundle

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
ruby 3.2.0
1+
ruby 3.3.0
22
nodejs 18.12.1
33
yarn 1.22.4

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 3.3.0
4+
5+
Default to ruby 3.3.
6+
7+
Allow more flexibility for ruby point releases.
8+
Remove support for ruby 2.5 runtime. If you need ruby 2.5 support, you can
9+
continue to use an older version of the package.
10+
311
## 3.2.0
412

513
Default to ruby 3.2.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ yarn test # run the automated test suite
140140
### Troubleshooting the demo_service
141141

142142
* Make sure the version of bundler specified in the demo_service Gemfile.lock
143-
is compatible with the version installed in the `amazon/aws-lambda-ruby:3.2`
143+
is compatible with the version installed in the `amazon/aws-lambda-ruby:3.3`
144144
image.
145145

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

__tests__/demo_service/Gemfile.lock

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ GEM
3535
rspec-core (3.12.2)
3636
rspec-support (~> 3.12.0)
3737
rspec-support (3.12.1)
38-
stringio (3.0.4)
38+
stringio (3.1.0)
3939
unf (0.1.4)
4040
unf_ext
4141
unf_ext (0.0.8.2)
4242

4343
PLATFORMS
4444
arm64-darwin-21
45+
arm64-darwin-22
4546
x86_64-linux
4647

4748
DEPENDENCIES
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
service: demo
22
provider:
33
name: aws
4-
runtime: ruby2.5
4+
runtime: ruby3.3
55
package:
66
include:
77
- handler.rb

__tests__/index.test.js

Lines changed: 78 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ beforeEach(()=>{
2020
},
2121
provider: {
2222
name: "aws",
23-
runtime: "ruby2.5"
23+
runtime: "ruby3.3"
2424
},
2525
custom: {
2626
rubyPackage: {
@@ -81,82 +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-
"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/**"
84+
"vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/**",
85+
"!vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/.git/**",
86+
"!vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/test/**",
87+
"!vendor/bundle/ruby/3.3.0/gems/addressable-2.8.4/spec/**",
88+
"vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/**",
89+
"!vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/.git/**",
90+
"!vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/test/**",
91+
"!vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/spec/**",
92+
"vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/**",
93+
"!vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/.git/**",
94+
"!vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/test/**",
95+
"!vendor/bundle/ruby/3.3.0/gems/domain_name-0.5.20190701/spec/**",
96+
"vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/**",
97+
"vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/ffi-1.15.5/**",
98+
"!vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/.git/**",
99+
"!vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/test/**",
100+
"!vendor/bundle/ruby/3.3.0/gems/ffi-1.15.5/spec/**",
101+
"vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/**",
102+
"!vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/.git/**",
103+
"!vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/test/**",
104+
"!vendor/bundle/ruby/3.3.0/gems/ffi-compiler-1.0.1/spec/**",
105+
"vendor/bundle/ruby/3.3.0/gems/http-5.1.1/**",
106+
"!vendor/bundle/ruby/3.3.0/gems/http-5.1.1/.git/**",
107+
"!vendor/bundle/ruby/3.3.0/gems/http-5.1.1/test/**",
108+
"!vendor/bundle/ruby/3.3.0/gems/http-5.1.1/spec/**",
109+
"vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/**",
110+
"!vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/.git/**",
111+
"!vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/test/**",
112+
"!vendor/bundle/ruby/3.3.0/gems/http-cookie-1.0.5/spec/**",
113+
"vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/**",
114+
"!vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/.git/**",
115+
"!vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/test/**",
116+
"!vendor/bundle/ruby/3.3.0/gems/http-form_data-2.3.0/spec/**",
117+
"vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/**",
118+
"vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/llhttp-ffi-0.4.0/**",
119+
"!vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/.git/**",
120+
"!vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/test/**",
121+
"!vendor/bundle/ruby/3.3.0/gems/llhttp-ffi-0.4.0/spec/**",
122+
"vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/**",
123+
"vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/psych-5.0.1/**",
124+
"!vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/.git/**",
125+
"!vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/test/**",
126+
"!vendor/bundle/ruby/3.3.0/gems/psych-5.0.1/spec/**",
127+
"vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/**",
128+
"!vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/.git/**",
129+
"!vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/test/**",
130+
"!vendor/bundle/ruby/3.3.0/gems/public_suffix-5.0.1/spec/**",
131+
"vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/**",
132+
"!vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/.git/**",
133+
"!vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/test/**",
134+
"!vendor/bundle/ruby/3.3.0/gems/rake-13.0.6/spec/**",
135+
"vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/**",
136+
"!vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/.git/**",
137+
"!vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/test/**",
138+
"!vendor/bundle/ruby/3.3.0/gems/redis-5.0.6/spec/**",
139+
"vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/**",
140+
"!vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/.git/**",
141+
"!vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/test/**",
142+
"!vendor/bundle/ruby/3.3.0/gems/redis-client-0.14.1/spec/**",
143+
"vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/**",
144+
"!vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/.git/**",
145+
"!vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/test/**",
146+
"!vendor/bundle/ruby/3.3.0/gems/redis-namespace-1.11.0/spec/**",
147+
"vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/**",
148+
"vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/stringio-3.1.0/**",
149+
"!vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/.git/**",
150+
"!vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/test/**",
151+
"!vendor/bundle/ruby/3.3.0/gems/stringio-3.1.0/spec/**",
152+
"vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/**",
153+
"!vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/.git/**",
154+
"!vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/test/**",
155+
"!vendor/bundle/ruby/3.3.0/gems/unf-0.1.4/spec/**",
156+
"vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/**",
157+
"vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/unf_ext-0.0.8.2/**",
158+
"!vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/.git/**",
159+
"!vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/test/**",
160+
"!vendor/bundle/ruby/3.3.0/gems/unf_ext-0.0.8.2/spec/**"
161161
]);
162162
});

build-gems.sh

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
#!/bin/bash
22
set -euo pipefail
33

4+
os=$(. /etc/os-release; echo "$PRETTY_NAME")
5+
46
# script to build gems within amazon linux lambda containers
57
echo '## INSTALLING PACKAGES ##'
6-
yum update -y
7-
yum install -y gcc gcc-c++ make libffi-devel libyaml-devel
8+
9+
# Amazon Linux 2 uses yum while Amazon Linux 2023 and likely future versions
10+
# use dnf
11+
if [[ $os == "Amazon Linux 2" ]]
12+
then
13+
pkg_mgr="yum"
14+
else
15+
pkg_mgr="dnf"
16+
fi
17+
18+
eval "${pkg_mgr} update -y"
19+
eval "${pkg_mgr} install -y gcc gcc-c++ make libffi-devel libyaml-devel"
820

921
echo '## INSTALLING GEMS ##'
1022
bundle config set --local path 'vendor/bundle'

index.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,22 @@ class PackageRubyBundlePlugin {
4141

4242
rubyVersion() {
4343
// RbConfig::CONFIG['ruby_version']
44-
switch (this.serverless.service.provider.runtime) {
45-
case 'ruby2.7':
46-
return '2.7.0';
47-
default:
48-
return '3.2.0';
49-
}
50-
}
44+
const runtime_version = this.serverless.service.provider.runtime
45+
const match = runtime_version.match(/ruby(\d+\.\d+)/);
5146

52-
extensionApiVersion() {
53-
// Gem.extension_api_version
54-
switch (this.serverless.service.provider.runtime) {
55-
case 'ruby2.7':
56-
return '2.7.0';
57-
default:
58-
return '3.2.0';
47+
if (match) {
48+
return `${match[1]}.0`;
5949
}
50+
51+
// If not set, default to 3.3.0
52+
return '3.3.0';
6053
}
6154

6255
beforePackage(){
6356
this.warnOnUnsupportedRuntime();
6457

6558
const gemRoot = `vendor/bundle/ruby/${this.rubyVersion()}`;
66-
const extensionDir = `${gemRoot}/extensions/x86_64-linux/${this.extensionApiVersion()}`;
59+
const extensionDir = `${gemRoot}/extensions/x86_64-linux/${this.rubyVersion()}`;
6760

6861
const excludeGemTests = true; //TODO: make configurable
6962
const identifyGemsScript = `
@@ -140,7 +133,7 @@ class PackageRubyBundlePlugin {
140133
}
141134

142135
warnOnUnsupportedRuntime(){
143-
const runtimes = ['ruby2.7', 'ruby3.2'];
136+
const runtimes = ['ruby2.7', 'ruby3.2', 'ruby3.3'];
144137

145138
if (this.config.debug){
146139
this.log(`platform: ${process.platform}`);

integration-test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ pushd __tests__/demo_service
4242
npm install --no-save serverless-ruby-*.tgz
4343

4444
echo "## RUNNING RUBY VERSION TESTS"
45+
test_version "3.3"
4546
test_version "3.2"
4647
test_version "2.7"
4748

0 commit comments

Comments
 (0)