Skip to content

Commit 63fcd59

Browse files
authored
Merge pull request #35 from navarasu/fix_28_document_exclude_test_dev_gem
#28 Added document and test case for exclude test development gems
2 parents f647df1 + 438b71f commit 63fcd59

File tree

10 files changed

+132
-14
lines changed

10 files changed

+132
-14
lines changed

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com) [![npm](https://img.shields.io/npm/v/serverless-ruby-layer.svg)](https://www.npmjs.com/package/serverless-ruby-layer) [![Build Status](https://img.shields.io/circleci/build/github/navarasu/serverless-ruby-layer)](https://circleci.com/gh/navarasu/serverless-ruby-layer) [![Coverage Status](https://coveralls.io/repos/github/navarasu/serverless-ruby-layer/badge.svg?branch=master)](https://coveralls.io/github/navarasu/serverless-ruby-layer?branch=master) [![MIT License](https://img.shields.io/npm/l/serverless-ruby-layer)](https://github.com/navarasu/serverless-ruby-layer/blob/master/LICENSE)
44

5-
A Serverless Plugin to bundle ruby gems from Gemfile and deploy it to the lambda layer automatically while running `serverless deploy`.
5+
A Serverless Plugin which bundles ruby gems from Gemfile and deploys them to the lambda layer automatically while running `serverless deploy`.
66

77
It auto-configures the AWS lambda layer and RUBY_PATH to all the functions.
88

@@ -71,18 +71,18 @@ custom:
7171
use_docker: true
7272
```
7373

74-
For more details, refer the docs [here](https://navarasu.github.io/serverless-ruby-layer/#/configuration)
74+
For more detailse refer the docs [here](https://navarasu.github.io/serverless-ruby-layer/#/configuration)
7575

7676

7777
## Usage
7878

7979
Using the custom configuration, the plugin can be utilized for below cases,
80-
* Using locallly installed bundler for gems which native extensions - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/basic) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use_local_bundler)
81-
* Using Docker for gems with OS native C extensions or system libraries like `http`, `Nokogiri` - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use_docker)
82-
* Preinstall OS packages (yum packages) for gems which requires OS native system libraries like `pg`, `mysql`, `RMagick` - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker_with_yums) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use_docker_with_yums)
83-
* Using Dockerfile for gems which with other OS Linux image or system libraries and utilities - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker_file) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use_docker_file)
84-
* Include / Exclude specific functions from layer configuration - [Include Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/include_functions) , [Exclude Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/exclude_functions) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/include_exclude)
85-
80+
* Using locally installed bundler for gems without any native extensions - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/basic) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use_local_bundler)
81+
* Using Docker for gems with OS native C extensions or system libraries like `http`, `Nokogiri` - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use-docker)
82+
* Preinstall OS packages (yum packages) for gems which requires OS native system libraries like `pg`, `mysql`, `RMagick` - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker_with_yums) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use-docker-with-yums)
83+
* Using Dockerfile for gems which with other OS Linux image or system libraries and utilities - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use-docker-file) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/use_docker_file)
84+
* Include / Exclude specific functions from layer configuration - [Include Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/include-functions) , [Exclude Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/exclude-functions) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/include_exclude)
85+
* Exclude test and development related gems from layer - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/exclude-dev-test-gems) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/exclude_dev_test_gems)
8686

8787
## Contributing
8888

@@ -94,4 +94,4 @@ Refer [Guidelines](https://github.com/navarasu/serverless-ruby-layer/blob/master
9494

9595
## License
9696

97-
[MIT](https://choosealicense.com/licenses/mit/)
97+
[MIT](https://choosealicense.com/licenses/mit/)

docs/_sidebar.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
* [Docker with Yums installed](use_docker_with_yums)
99
* [Using Custom Dockerfile](use_docker_file)
1010
* [Include / Exclude functions](include_exclude)
11+
* [Exclude test gems / development gems](exclude_dev_test_gems)
1112
* [Configuration](/configuration.md)
12-
* [Release Notes](/release_notes.md)
13+
* [Release Notes](/release_notes.md)

docs/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
'/use_docker': '/usage_examples/use_docker',
3434
'/use_docker_with_yums': '/usage_examples/use_docker_with_yums',
3535
'/use_docker_file': '/usage_examples/use_docker_file',
36-
'/include_exclude': '/usage_examples/include_exclude'
36+
'/include_exclude': '/usage_examples/include_exclude',
37+
'/exclude_dev_test_gems': '/usage_examples/exclude_dev_test_gems'
3738
},
3839
search: {
3940
noData: {

docs/release_notes.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
# Release notes
22

3+
### [1.4.0](https://www.npmjs.com/package/serverless-ruby-layer/v/1.4.0)
4+
### Docker Inside Docker Release
5+
* Replaced docker volume mount with docker cp to support CI (Docker inside Docker) environment.
6+
* Handled the bundle flag deprecated for bundler version greater than 2.1
7+
* Added docker related test case to run in circle-ci
8+
* Improved test coverage to 88 %
9+
* Documented exclude test and development gem example
10+
11+
### [1.3.0](https://www.npmjs.com/package/serverless-ruby-layer/v/1.3.0)
12+
#### Specify Functions Release
13+
* Option to include / exlude functions from attaching layers
14+
* To reduce layer zip size, the gem cache files are excluded in zipping than removing it from the bundle folder
15+
(To avoid unnecessary error while removing and also for upcoming reuse gem options)
16+
17+
### [1.2.1](https://www.npmjs.com/package/serverless-ruby-layer/v/1.2.0)
18+
#### Validated Release
19+
* Fixed issue in removing Cache dir #17
20+
* Handled all edge-case errors and thrown user informative message
21+
* Added logs message for future issue debugging
22+
* Added issue template with necessary details
23+
24+
### [1.2.0](https://www.npmjs.com/package/serverless-ruby-layer/v/1.2.0)
25+
#### Native Libs Release
26+
* Specify yums to be preinstalled before doing a bundle install for gems with os native extension like pg, mysql.
27+
* Pack and Deploy native library files to the lambda layer along with gems. for e.g to pack /usr/lib64/libpq.so.5 file for pg.
28+
* Use docker file to specify custom installation and configuration
29+
* Added docs and examples
30+
331
### [1.1.0](https://www.npmjs.com/package/serverless-ruby-layer/v/1.1.0)
432
#### Use-Docker Release
533
* Added option to use docker to bundle gem with os specific C extensions
@@ -12,4 +40,4 @@
1240
#### First Release
1341
* Auto deploy the gems to AWS layer while doing serverless deploy
1442
* Also configure the layer to make the gem available to all functions declared in the serverless.yml
15-
* Uses local bundler to install the gem
43+
* Uses local bundler to install the gem
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
## Exclude test and development related gems
3+
4+
<!-- tabs:start -->
5+
6+
#### ** Gemfile **
7+
8+
```ruby
9+
source 'https://rubygems.org'
10+
gem 'httparty'
11+
12+
group :development do
13+
gem 'rubocop'
14+
end
15+
16+
group :test do
17+
gem 'rspec'
18+
end
19+
20+
```
21+
22+
#### ** serverless.yml **
23+
24+
```yml
25+
service: basic
26+
27+
plugins:
28+
- serverless-ruby-layer
29+
30+
provider:
31+
name: aws
32+
runtime: ruby2.5
33+
34+
functions:
35+
hello:
36+
handler: handler.hello
37+
```
38+
39+
#### ** handler.rb **
40+
41+
```ruby
42+
require 'httparty'
43+
44+
def hello(event:, context:)
45+
body = HTTParty.get("https://github.com").body
46+
47+
{ statusCode: 200, body: body }
48+
end
49+
50+
```
51+
52+
<!-- tabs:end -->
53+
Running `sls deploy` automatically deploys the required gems as in Gemfile by excluding the test and development related gems by default to AWS lambda layer
54+

docs/usage_examples/main.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ Using the custom configuration, the plugin can be utilized for below cases,
66
* Using Docker for gems with C extensions or system libraries like `http`, `Nokogiri` - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker) - [Docs](use_docker)
77
* Preinstall OS packages (yum packages) for gems which requires OS native system libraries like `pg`, `mysql`, `RMagick` - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker_with_yums) - [Docs](use_docker_with_yums)
88
* Using Dockerfile for gems which requires other system libraries and configuration - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/use_docker_file) - [Docs](use_docker_file)
9-
9+
* Exclude test and development related gems from layer - [Example](https://github.com/navarasu/serverless-ruby-layer/blob/master/examples/exclude-dev-test-gems) - [Docs](https://navarasu.github.io/serverless-ruby-layer/#/exclude_dev_test_gems)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
source 'https://rubygems.org'
2+
gem 'httparty'
3+
4+
group :development do
5+
gem 'rubocop'
6+
end
7+
8+
group :test do
9+
gem 'rspec'
10+
end
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'httparty'
2+
3+
def hello(event:, context:)
4+
body = HTTParty.get("https://github.com").body
5+
6+
{ statusCode: 200, body: body }
7+
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
service: exclude-dev-test-gems
2+
3+
plugins:
4+
- serverless-ruby-layer
5+
6+
provider:
7+
name: aws
8+
runtime: ruby2.5
9+
10+
functions:
11+
hello:
12+
handler: handler.hello

test/test.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ let test_data = [
3131
{folder: 'exclude-functions', gem_zip_dirs: ['/','/bin/','/build_info/','/doc/','/extensions/', '/gems/',
3232
'/specifications/','/gems/httparty/', '/gems/mime-types-data/', '/gems/multi_xml/', '/gems/mime-types/'],
3333
function_files: ['handler1.rb', 'handler2.rb', 'handler3.rb'], include_functions: ['Hello1', 'Hello2'],
34-
exclude_functions: ['Hello3']}
34+
exclude_functions: ['Hello3']},
35+
36+
{ folder: 'exclude-dev-test-gems', gem_zip_dirs: ['/','/bin/','/build_info/','/doc/','/extensions/', '/gems/',
37+
'/specifications/','/gems/httparty/', '/gems/mime-types-data/', '/gems/multi_xml/', '/gems/mime-types/'],
38+
function_files: ['handler.rb'], include_functions: ['Hello'], exclude_functions:[] },
39+
3540
]
3641

3742
describe('serverless package', function () {

0 commit comments

Comments
 (0)