Skip to content

Commit 4b2cf0e

Browse files
committed
Initial version of Ruby template ported to of-watchdog
Signed-off-by: Alex Ellis (VMware) <[email protected]>
0 parents  commit 4b2cf0e

File tree

7 files changed

+142
-0
lines changed

7 files changed

+142
-0
lines changed

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
## ruby-http
2+
3+
### Usage:
4+
5+
```
6+
faas template pull
7+
faas new --lang ruby-http homepage
8+
```
9+
10+
#### Example:
11+
12+
Edit the `homepage/handler.rb` file to return some HTML:
13+
14+
```ruby
15+
class Handler
16+
def run(body, headers)
17+
response_headers = {"content-type": "text/html"}
18+
body = "<html>Hello world from the Ruby template</html>"
19+
20+
return body, response_headers
21+
end
22+
end
23+
```
24+
25+
Add a gem to the `homepage/Gemfile` if you need additional dependencies.
26+
27+
Deploy:
28+
29+
```sh
30+
faas-cli up -f homepage.yml
31+
```
32+

template/ruby-http/Dockerfile

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
FROM ruby:2.4-alpine3.6
2+
3+
ARG ADDITIONAL_PACKAGE
4+
5+
# Alternatively use ADD https:// (which will not be cached by Docker builder)
6+
RUN apk --no-cache add curl ${ADDITIONAL_PACKAGE} \
7+
&& echo "Pulling watchdog binary from Github." \
8+
&& curl -sSL https://github.com/openfaas-incubator/of-watchdog/releases/download/0.4.0/of-watchdog > /usr/bin/fwatchdog \
9+
&& chmod +x /usr/bin/fwatchdog \
10+
&& apk del curl
11+
12+
WORKDIR /home/app
13+
14+
COPY Gemfile .
15+
COPY index.rb .
16+
COPY function function
17+
18+
RUN bundle install \
19+
&& mkdir -p /home/app/function
20+
21+
WORKDIR /home/app/function
22+
23+
RUN bundle install
24+
25+
RUN addgroup -S app \
26+
&& adduser app -S -G app
27+
28+
RUN chown app:app -R /home/app
29+
30+
USER app
31+
32+
WORKDIR /home/app
33+
34+
ENV fprocess="ruby index.rb"
35+
EXPOSE 8080
36+
37+
HEALTHCHECK --interval=2s CMD [ -e /tmp/.lock ] || exit 1
38+
39+
ENV upstream_url="http://127.0.0.1:5000"
40+
ENV mode="http"
41+
42+
CMD ["fwatchdog"]

template/ruby-http/Gemfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
source 'https://rubygems.org'
2+
3+
gem "sinatra"

template/ruby-http/function/Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
source 'https://rubygems.org'
2+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Handler
2+
def run(body, headers)
3+
response_headers = {"content-type": "text/plain"}
4+
body = "Hello world from the Ruby template"
5+
6+
return body, response_headers
7+
end
8+
end

template/ruby-http/index.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Copyright (c) Alex Ellis 2017. All rights reserved.
2+
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
require_relative 'function/handler'
5+
6+
require 'sinatra'
7+
8+
set :port, 5000
9+
# set :bind, '0.0.0.0'
10+
11+
handler = Handler.new
12+
13+
get '/*' do
14+
res, res_headers = handler.run request.body, request.env
15+
16+
headers = res_headers
17+
18+
return res
19+
end
20+
21+
post '/*' do
22+
res, res_headers = handler.run request.body, request.env
23+
headers = res_headers
24+
return res
25+
end
26+
27+
put '/*' do
28+
res, res_headers = handler.run request.body, request.env
29+
headers = res_headers
30+
31+
return res
32+
end
33+
34+
delete '/*' do
35+
res, res_headers = handler.run request.body, request.env
36+
headers = res_headers
37+
38+
return res
39+
end
40+

template/ruby-http/template.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
language: ruby
2+
fprocess: ruby index.rb
3+
build_options:
4+
- name: dev
5+
packages:
6+
- make
7+
- automake
8+
- gcc
9+
- g++
10+
- subversion
11+
- python3-dev
12+
- musl-dev
13+
- libffi-dev
14+
- libssh
15+
- libssh-dev

0 commit comments

Comments
 (0)