lamby 1.0.0 → 2.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/cicd.yml +17 -0
  3. data/.gitignore +1 -1
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +51 -0
  6. data/Dockerfile +12 -0
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +94 -79
  9. data/README.md +10 -4
  10. data/Rakefile +1 -0
  11. data/bin/_setup +6 -0
  12. data/bin/_test +6 -0
  13. data/bin/bootstrap +3 -17
  14. data/bin/setup +3 -3
  15. data/bin/test +6 -3
  16. data/bin/update +2 -2
  17. data/docker-compose.yml +14 -0
  18. data/lamby.gemspec +1 -2
  19. data/lib/lamby.rb +7 -3
  20. data/lib/lamby/handler.rb +16 -3
  21. data/lib/lamby/logger.rb +13 -9
  22. data/lib/lamby/rack.rb +11 -9
  23. data/lib/lamby/rack_alb.rb +11 -14
  24. data/lib/lamby/rack_http.rb +80 -0
  25. data/lib/lamby/{rack_api.rb → rack_rest.rb} +7 -3
  26. data/lib/lamby/ssm_parameter_store.rb +3 -3
  27. data/lib/lamby/templates.rake +4 -3
  28. data/lib/lamby/templates/{application_load_balancer.rb → alb.rb} +1 -1
  29. data/lib/lamby/templates/{application_load_balancer → alb}/app.rb +0 -0
  30. data/lib/lamby/templates/{application_load_balancer → alb}/build +3 -3
  31. data/lib/lamby/templates/{application_load_balancer → alb}/deploy +1 -1
  32. data/lib/lamby/templates/{application_load_balancer → alb}/template.yaml +1 -1
  33. data/lib/lamby/templates/{api_gateway.rb → http.rb} +2 -2
  34. data/lib/lamby/templates/{api_gateway → http}/app.rb +1 -1
  35. data/lib/lamby/templates/{api_gateway → http}/build +3 -3
  36. data/lib/lamby/templates/{api_gateway → http}/deploy +1 -1
  37. data/lib/lamby/templates/http/template.yaml +48 -0
  38. data/lib/lamby/templates/rest.rb +25 -0
  39. data/lib/lamby/templates/rest/app.rb +10 -0
  40. data/lib/lamby/templates/rest/build +23 -0
  41. data/lib/lamby/templates/rest/deploy +22 -0
  42. data/lib/lamby/templates/{api_gateway → rest}/template.yaml +2 -2
  43. data/lib/lamby/templates/shared.rb +3 -1
  44. data/lib/lamby/version.rb +1 -1
  45. data/vendor/.keep +0 -0
  46. metadata +29 -37
  47. data/.python-version +0 -1
  48. data/.travis.yml +0 -17
  49. data/Brewfile +0 -5
  50. data/Pipfile +0 -13
  51. data/Pipfile.lock +0 -370
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cad37e588b82d16978294d8ae866bdb90f67dbd82f8da8ad04f74c04515043d7
4
- data.tar.gz: f2301b796dfcfcd32ea21dd8dee9666257887e28022266a9e662c17f2a5df204
3
+ metadata.gz: 9bb411b8d5961ebef380fdd6148d5349481a9f8d5ec4f935e6d3db25647b8c81
4
+ data.tar.gz: 889122ece8d9d93a695f8d941f37e56e898dc20c4c3e529e07fe89b87b7f043d
5
5
  SHA512:
6
- metadata.gz: 0062a78076ce56c00ce31ba1813112f4e1341e24fd104df195131f4a5cde00142490d336ceacb91c6431facfaae3dc115feba6e0e9952c81c6e907f3bd32b3c9
7
- data.tar.gz: d728410d053304a4b6306972d63e054b1d33b45ca57ca8c9499467902c53990523164661399b1098fbd9b27d9cff1e11518250fee0d03c8bc0130bda6670eda4
6
+ metadata.gz: dd62c1917031b62e0364e381dd003a24e7836e852656f02f2d4c8b77f4804b3c283a7303b4eb16ed5f5165eef8c6fa0e717e46bc15e559885e29cb7a7bab383c
7
+ data.tar.gz: 531a661486ef2473f83730f5bf22601429fffc52e39164bc38b473984a321ad3ce294fd21d81bef2e254746d4481af6190031470e64e1d50d55c0d995de53769
@@ -0,0 +1,17 @@
1
+ name: CI/CD
2
+ on: [push]
3
+ jobs:
4
+ cicd:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - name: Checkout
8
+ uses: actions/checkout@v1
9
+ - name: Bootstrap
10
+ run: |
11
+ ./bin/bootstrap
12
+ - name: Setup
13
+ run: |
14
+ ./bin/setup
15
+ - name: Test
16
+ run: |
17
+ ./bin/test
data/.gitignore CHANGED
@@ -5,6 +5,7 @@
5
5
  /pkg/
6
6
  /spec/reports/
7
7
  /tmp/
8
+ /vendor/bundle
8
9
  test/dummy_app/.gitignore
9
10
  test/dummy_app/app.rb
10
11
  test/dummy_app/template.yaml
@@ -12,4 +13,3 @@ test/dummy_app/bin/build
12
13
  test/dummy_app/bin/deploy
13
14
  test/dummy_app/tmp
14
15
  test/dummy_app/log/**/*
15
- test/dummy_app/public/**/*
@@ -1 +1 @@
1
- 2.5.5
1
+ 2.7.0
@@ -1,7 +1,58 @@
1
+ <!-- -*- mode: markdown -*- -->
1
2
  # Keep A Changelog!
2
3
 
3
4
  See this http://keepachangelog.com link for information on how we want this documented formatted.
4
5
 
6
+ ## v2.1.0
7
+
8
+ #### Changed
9
+
10
+ * Only load the railtie if `Rails` is defined.
11
+
12
+ ## v2.0.1
13
+
14
+ #### Changed
15
+
16
+ * Remove Rails runtime dep. Only rack is needed.
17
+
18
+ ## v2.0.0
19
+
20
+ Support for new API Gateway HTTP APIs!!!
21
+
22
+ #### Changed
23
+
24
+ * The `Lamby.handler` must have a `:rack` option. One of `:http`, `:rest`, `:alb`.
25
+ * Renamed template generators to match options above.
26
+ * The `lamby:install` task now defaults to HTTP API.
27
+ * Changed the name of `:api` rack option to `:rest`.
28
+ * Removed `export` from Dotenv files. Better Docker compatability.
29
+
30
+ #### Added
31
+
32
+ * New reack handler for HTTP API v1 and v2.
33
+ * Lots of backfill tests for, ALBs & REST APIs.
34
+
35
+
36
+ ## v1.0.3
37
+
38
+ #### Changed
39
+
40
+ * Change shebangs to `#!/usr/bin/env bash`
41
+
42
+
43
+ ## v1.0.2
44
+
45
+ #### Changed
46
+
47
+ * Adds an optional 'overwrite' parameter to #to_env.
48
+
49
+ ## v1.0.1
50
+
51
+ #### Changed
52
+
53
+ * Links in bin/build templates to point to lamby.custominktech.com site.
54
+
55
+
5
56
  ## v1.0.0
6
57
 
7
58
  #### Fixed
@@ -0,0 +1,12 @@
1
+ FROM lambci/lambda:build-ruby2.7
2
+
3
+ # Lock down AWS SAM version.
4
+ RUN pip install awscli && \
5
+ pip uninstall --yes aws-sam-cli && \
6
+ pip install aws-sam-cli==0.45.0
7
+
8
+ # Asset Pipeline
9
+ RUN curl -sL https://rpm.nodesource.com/setup_12.x | bash - && \
10
+ yum install -y nodejs
11
+
12
+ WORKDIR /var/task
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
3
  gemspec
4
+
5
+ gem 'rails'
@@ -1,141 +1,155 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lamby (1.0.0)
4
+ lamby (2.1.0)
5
5
  rack
6
- rails
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
- actioncable (5.2.3)
12
- actionpack (= 5.2.3)
10
+ actioncable (6.0.2.2)
11
+ actionpack (= 6.0.2.2)
13
12
  nio4r (~> 2.0)
14
13
  websocket-driver (>= 0.6.1)
15
- actionmailer (5.2.3)
16
- actionpack (= 5.2.3)
17
- actionview (= 5.2.3)
18
- activejob (= 5.2.3)
14
+ actionmailbox (6.0.2.2)
15
+ actionpack (= 6.0.2.2)
16
+ activejob (= 6.0.2.2)
17
+ activerecord (= 6.0.2.2)
18
+ activestorage (= 6.0.2.2)
19
+ activesupport (= 6.0.2.2)
20
+ mail (>= 2.7.1)
21
+ actionmailer (6.0.2.2)
22
+ actionpack (= 6.0.2.2)
23
+ actionview (= 6.0.2.2)
24
+ activejob (= 6.0.2.2)
19
25
  mail (~> 2.5, >= 2.5.4)
20
26
  rails-dom-testing (~> 2.0)
21
- actionpack (5.2.3)
22
- actionview (= 5.2.3)
23
- activesupport (= 5.2.3)
24
- rack (~> 2.0)
27
+ actionpack (6.0.2.2)
28
+ actionview (= 6.0.2.2)
29
+ activesupport (= 6.0.2.2)
30
+ rack (~> 2.0, >= 2.0.8)
25
31
  rack-test (>= 0.6.3)
26
32
  rails-dom-testing (~> 2.0)
27
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
28
- actionview (5.2.3)
29
- activesupport (= 5.2.3)
33
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
34
+ actiontext (6.0.2.2)
35
+ actionpack (= 6.0.2.2)
36
+ activerecord (= 6.0.2.2)
37
+ activestorage (= 6.0.2.2)
38
+ activesupport (= 6.0.2.2)
39
+ nokogiri (>= 1.8.5)
40
+ actionview (6.0.2.2)
41
+ activesupport (= 6.0.2.2)
30
42
  builder (~> 3.1)
31
43
  erubi (~> 1.4)
32
44
  rails-dom-testing (~> 2.0)
33
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
34
- activejob (5.2.3)
35
- activesupport (= 5.2.3)
45
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
46
+ activejob (6.0.2.2)
47
+ activesupport (= 6.0.2.2)
36
48
  globalid (>= 0.3.6)
37
- activemodel (5.2.3)
38
- activesupport (= 5.2.3)
39
- activerecord (5.2.3)
40
- activemodel (= 5.2.3)
41
- activesupport (= 5.2.3)
42
- arel (>= 9.0)
43
- activestorage (5.2.3)
44
- actionpack (= 5.2.3)
45
- activerecord (= 5.2.3)
49
+ activemodel (6.0.2.2)
50
+ activesupport (= 6.0.2.2)
51
+ activerecord (6.0.2.2)
52
+ activemodel (= 6.0.2.2)
53
+ activesupport (= 6.0.2.2)
54
+ activestorage (6.0.2.2)
55
+ actionpack (= 6.0.2.2)
56
+ activejob (= 6.0.2.2)
57
+ activerecord (= 6.0.2.2)
46
58
  marcel (~> 0.3.1)
47
- activesupport (5.2.3)
59
+ activesupport (6.0.2.2)
48
60
  concurrent-ruby (~> 1.0, >= 1.0.2)
49
61
  i18n (>= 0.7, < 2)
50
62
  minitest (~> 5.1)
51
63
  tzinfo (~> 1.1)
52
- arel (9.0.0)
53
- aws-eventstream (1.0.2)
54
- aws-partitions (1.146.0)
55
- aws-sdk-core (3.48.2)
64
+ zeitwerk (~> 2.2)
65
+ aws-eventstream (1.0.3)
66
+ aws-partitions (1.287.0)
67
+ aws-sdk-core (3.92.0)
56
68
  aws-eventstream (~> 1.0, >= 1.0.2)
57
- aws-partitions (~> 1.0)
69
+ aws-partitions (~> 1, >= 1.239.0)
58
70
  aws-sigv4 (~> 1.1)
59
71
  jmespath (~> 1.0)
60
- aws-sdk-ssm (1.41.0)
61
- aws-sdk-core (~> 3, >= 3.48.2)
72
+ aws-sdk-ssm (1.73.0)
73
+ aws-sdk-core (~> 3, >= 3.71.0)
62
74
  aws-sigv4 (~> 1.1)
63
- aws-sigv4 (1.1.0)
75
+ aws-sigv4 (1.1.1)
64
76
  aws-eventstream (~> 1.0, >= 1.0.2)
65
- builder (3.2.3)
77
+ builder (3.2.4)
66
78
  coderay (1.1.2)
67
- concurrent-ruby (1.1.5)
68
- crass (1.0.4)
69
- erubi (1.8.0)
79
+ concurrent-ruby (1.1.6)
80
+ crass (1.0.6)
81
+ erubi (1.9.0)
70
82
  globalid (0.4.2)
71
83
  activesupport (>= 4.2.0)
72
- i18n (1.6.0)
84
+ i18n (1.8.2)
73
85
  concurrent-ruby (~> 1.0)
74
86
  jmespath (1.4.0)
75
- loofah (2.2.3)
87
+ loofah (2.4.0)
76
88
  crass (~> 1.0.2)
77
89
  nokogiri (>= 1.5.9)
78
90
  mail (2.7.1)
79
91
  mini_mime (>= 0.1.1)
80
92
  marcel (0.3.3)
81
93
  mimemagic (~> 0.3.2)
82
- metaclass (0.0.4)
83
- method_source (0.9.2)
84
- mimemagic (0.3.3)
85
- mini_mime (1.0.1)
94
+ method_source (1.0.0)
95
+ mimemagic (0.3.4)
96
+ mini_mime (1.0.2)
86
97
  mini_portile2 (2.4.0)
87
- minitest (5.11.3)
88
- mocha (1.8.0)
89
- metaclass (~> 0.0.1)
90
- nio4r (2.4.0)
91
- nokogiri (1.10.3)
98
+ minitest (5.14.0)
99
+ minitest-focus (1.1.2)
100
+ minitest (>= 4, < 6)
101
+ mocha (1.11.2)
102
+ nio4r (2.5.2)
103
+ nokogiri (1.10.9)
92
104
  mini_portile2 (~> 2.4.0)
93
- pry (0.12.2)
94
- coderay (~> 1.1.0)
95
- method_source (~> 0.9.0)
96
- rack (2.0.7)
105
+ pry (0.13.0)
106
+ coderay (~> 1.1)
107
+ method_source (~> 1.0)
108
+ rack (2.2.2)
97
109
  rack-test (1.1.0)
98
110
  rack (>= 1.0, < 3)
99
- rails (5.2.3)
100
- actioncable (= 5.2.3)
101
- actionmailer (= 5.2.3)
102
- actionpack (= 5.2.3)
103
- actionview (= 5.2.3)
104
- activejob (= 5.2.3)
105
- activemodel (= 5.2.3)
106
- activerecord (= 5.2.3)
107
- activestorage (= 5.2.3)
108
- activesupport (= 5.2.3)
111
+ rails (6.0.2.2)
112
+ actioncable (= 6.0.2.2)
113
+ actionmailbox (= 6.0.2.2)
114
+ actionmailer (= 6.0.2.2)
115
+ actionpack (= 6.0.2.2)
116
+ actiontext (= 6.0.2.2)
117
+ actionview (= 6.0.2.2)
118
+ activejob (= 6.0.2.2)
119
+ activemodel (= 6.0.2.2)
120
+ activerecord (= 6.0.2.2)
121
+ activestorage (= 6.0.2.2)
122
+ activesupport (= 6.0.2.2)
109
123
  bundler (>= 1.3.0)
110
- railties (= 5.2.3)
124
+ railties (= 6.0.2.2)
111
125
  sprockets-rails (>= 2.0.0)
112
126
  rails-dom-testing (2.0.3)
113
127
  activesupport (>= 4.2.0)
114
128
  nokogiri (>= 1.6)
115
- rails-html-sanitizer (1.0.4)
116
- loofah (~> 2.2, >= 2.2.2)
117
- railties (5.2.3)
118
- actionpack (= 5.2.3)
119
- activesupport (= 5.2.3)
129
+ rails-html-sanitizer (1.3.0)
130
+ loofah (~> 2.3)
131
+ railties (6.0.2.2)
132
+ actionpack (= 6.0.2.2)
133
+ activesupport (= 6.0.2.2)
120
134
  method_source
121
135
  rake (>= 0.8.7)
122
- thor (>= 0.19.0, < 2.0)
123
- rake (12.3.2)
124
- sprockets (3.7.2)
136
+ thor (>= 0.20.3, < 2.0)
137
+ rake (13.0.1)
138
+ sprockets (4.0.0)
125
139
  concurrent-ruby (~> 1.0)
126
140
  rack (> 1, < 3)
127
141
  sprockets-rails (3.2.1)
128
142
  actionpack (>= 4.0)
129
143
  activesupport (>= 4.0)
130
144
  sprockets (>= 3.0.0)
131
- sqlite3 (1.4.1)
132
- thor (0.20.3)
145
+ thor (1.0.1)
133
146
  thread_safe (0.3.6)
134
- tzinfo (1.2.5)
147
+ tzinfo (1.2.6)
135
148
  thread_safe (~> 0.1)
136
149
  websocket-driver (0.7.1)
137
150
  websocket-extensions (>= 0.1.0)
138
151
  websocket-extensions (0.1.4)
152
+ zeitwerk (2.3.0)
139
153
 
140
154
  PLATFORMS
141
155
  ruby
@@ -145,10 +159,11 @@ DEPENDENCIES
145
159
  bundler
146
160
  lamby!
147
161
  minitest
162
+ minitest-focus
148
163
  mocha
149
164
  pry
165
+ rails
150
166
  rake
151
- sqlite3
152
167
 
153
168
  BUNDLED WITH
154
- 1.17.3
169
+ 2.1.4
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- # Lamby [![Build Status](https://travis-ci.org/customink/lamby.svg?branch=master)](https://travis-ci.org/customink/lamby)
2
+ # Lamby [![Actions Status](https://github.com/customink/lamby/workflows/CI/CD/badge.svg)](https://github.com/customink/lamby/actions)
3
3
 
4
4
  <h2>Simple Rails &amp; AWS Lambda Integration</h2>
5
5
 
@@ -7,11 +7,11 @@
7
7
 
8
8
  <p>&nbsp;</p>
9
9
 
10
- The goal of this project is to provide minimal code to allow your Rails application to respond to incoming [AWS Lambda Function Handler in Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-handler.html) `event` and `context` objects in the Lambda handler. We support integration with API Gateway and are currently working on Application Load Balancer support.
10
+ The goal of this project is to provide minimal code to allow your Rails application to respond to incoming [AWS Lambda Function Handler in Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-handler.html) `event` and `context` objects in the Lambda handler. We support Application Load Balancer integration or API Gateway.
11
11
 
12
12
  ```ruby
13
13
  def handler(event:, context:)
14
- Lamby.handler $app, event, context
14
+ Lamby.handler $app, event, context, rack: :http
15
15
  end
16
16
  ```
17
17
 
@@ -27,7 +27,13 @@ https://lamby.custominktech.com/docs/installing_aws_sam
27
27
 
28
28
  ## Contributing
29
29
 
30
- After checking out the repo, run `./bin/setup` to install dependencies. Then, run `./bin/test` to run the tests. **NOTE: There are no tests now but adding them is on our TODO list.**
30
+ After checking out the repo, run:
31
+
32
+ ```shell
33
+ $ ./bin/bootstrap
34
+ $ ./bin/setup
35
+ $ ./bin/test
36
+ ```
31
37
 
32
38
  Bug reports and pull requests are welcome on GitHub at https://github.com/customink/lamby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
33
39
 
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ ENV['RUBYOPT'] = '-W:no-deprecated -W:no-experimental'
1
2
  require "bundler/gem_tasks"
2
3
  require "rake/testtask"
3
4
 
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo '== Installing dependencies =='
5
+ bundle config set --local path 'vendor/bundle'
6
+ bundle install
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ export RAILS_ENV="test"
5
+
6
+ bundle exec rake test
@@ -1,20 +1,6 @@
1
1
  #!/bin/bash
2
-
3
2
  set -e
4
3
 
5
- if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ]; then
6
- brew bundle check || {
7
- echo "==> Installing Homebrew dependencies..."
8
- brew bundle --verbose
9
- }
10
- fi
11
-
12
- rbenv install \
13
- --skip-existing \
14
- $(cat .ruby-version)
15
-
16
- CFLAGS="-I$(brew --prefix zlib)/include" \
17
- LDFLAGS="-L$(brew --prefix zlib)/lib" \
18
- pyenv install \
19
- --skip-existing \
20
- $(cat .python-version)
4
+ echo '== Building containers =='
5
+ docker pull lambci/lambda:build-ruby2.7
6
+ docker-compose build