This directory contains several examples to get you started using Ruby with Fission.
Before running any of these functions, make sure you have created a
ruby
Fission environment:
$ fission env create --name ruby --image USER/ruby-env
A standard Ruby function has the basic form:
def handler(context)
return [200, {}, []]
end
If the fission context is not required, the function can be simplified:
def handler
[200, {}, ["Hello, world!\n"]]
end
If a simple text response is to be returned, with a status of 200, this can be further simplified.
def handler
"Hello, world!\n"
end
This example is the simplest possible Ruby function, as described above.
To run the example:
$ fission function create --name hello --env ruby --code examples/ruby/hello.rb
$ fission route create --method GET --url /hello --function hello
$ curl http://$FISSION_ROUTER/hello
Hello, world!
This example shows basic use of the Fission::Context
and
Fission::Request
objects.
To run the example:
$ fission function create --name request --env ruby --code examples/ruby/request_data.rb
$ fission route create --method GET --url /request/{id} --function request
$ curl http://$FISSION_ROUTER/request/123?key=abc
---ENV---
GATEWAY_INTERFACE=CGI/1.1
PATH_INFO=/
QUERY_STRING=key=abc
REMOTE_ADDR=172.17.0.8
REMOTE_HOST=172.17.0.8
REQUEST_METHOD=GET
REQUEST_URI=http://192.168.64.200:31314/?key=abc
SCRIPT_NAME=
SERVER_NAME=192.168.64.200
SERVER_PORT=31314
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=WEBrick/1.3.1 (Ruby/2.4.1/2017-03-22)
HTTP_HOST=192.168.64.200:31314
HTTP_USER_AGENT=curl/7.52.1
HTTP_ACCEPT=*/*
HTTP_X_FISSION_PARAMS_ID=123
HTTP_X_FORWARDED_FOR=172.17.0.1
HTTP_ACCEPT_ENCODING=gzip
rack.version=1=3
...
HTTP_VERSION=HTTP/1.1
REQUEST_PATH=/
---HEADERS---
Accept: */*
Accept-Encoding: gzip
Host: 192.168.64.200:31314
User-Agent: curl/7.52.1
Version: HTTP/1.1
X-Fission-Params-Id: 123
X-Forwarded-For: 172.17.0.1
---PARAMS---
key=abc
id=123
--BODY--
$ fission function create --name parse --env ruby --src "parse/*" --entrypoint handler
$ fission fn test --name parse --body '<message>This is my message</message>'
This is my message