Merge pull request #415 from metrue/perl

Perl
This commit is contained in:
Minghe
2019-12-19 10:14:22 +08:00
committed by GitHub
8 changed files with 82 additions and 1 deletions

View File

@@ -32,7 +32,7 @@ cli-test-ci:
./scripts/test_cli.sh 'js'
cli-test:
./scripts/test_cli.sh 'js rb py go php java d rs'
./scripts/test_cli.sh 'js rb py go php java d rs pl'
http-test:
./scripts/http_test.sh

View File

@@ -37,6 +37,7 @@ Feel free hacking fx to support the languages not listed. Welcome to tweet me [@
| PHP | Supported | [@chlins](https://github.com/chlins)| [/examples/PHP](https://github.com/metrue/fx/tree/master/examples/functions/PHP) |
| Julia | Supported | [@matbesancon](https://github.com/matbesancon)| [/examples/Julia](https://github.com/metrue/fx/tree/master/examples/functions/Julia) |
| D | Supported | [@andre2007](https://github.com/andre2007)| [/examples/D](https://github.com/metrue/fx/tree/master/examples/functions/D) |
| Perl | Supported | fx | [/examples/Perl](https://github.com/metrue/fx/tree/master/examples/functions/Perl) |
| R | Working on [need your help](https://github.com/metrue/fx/issues/31) | ||
# Installation

36
examples/functions/Perl/README.md vendored Normal file
View File

@@ -0,0 +1,36 @@
# Make a Perl function a service with fx
Write a function like,
```perl
sub fx {
my $ctx = shift;
return 'hello fx'
}
1;
```
then deploy it with `fx up` command,
```shell
$ fx up -p 8080:3000 func.pl
```
test it using `curl`
```shell
$ curl 127.0.0.1:8080
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: text/plain; charset=utf-8
Date: Tue, 06 Aug 2019 15:58:41 GMT
hello fx
```
### ctx
The `ctx` object is exactly the [Controller](https://mojolicious.org/perldoc/Mojolicious/Controller) of [Mojolicious](https://mojolicious.org/perldoc/Mojolicious) framework.

6
examples/functions/Perl/func.pl vendored Normal file
View File

@@ -0,0 +1,6 @@
sub fx {
my $ctx = shift;
return 'hello fx'
}
1;

13
packer/images/perl/Dockerfile vendored Normal file
View File

@@ -0,0 +1,13 @@
FROM alpine:3.4
MAINTAINER Mojolicious
ADD . .
COPY cpanfile /
ENV EV_EXTRA_DEFS -DEV_NO_ATFORK
RUN apk update && \
apk add perl perl-io-socket-ssl perl-dbd-pg perl-dev g++ make wget curl && \
curl -L https://cpanmin.us | perl - App::cpanminus && cpanm --installdeps . -M https://cpan.metacpan.org
EXPOSE 3000
CMD ["perl", "app.pl", "daemon"]

17
packer/images/perl/app.pl vendored Normal file
View File

@@ -0,0 +1,17 @@
use Mojolicious::Lite;
require "./fx.pl";
get '/' => sub {
my $ctx = shift;
my $res = fx($ctx);
$ctx->render(json => $res);
};
post '/' => sub {
my $ctx = shift;
my $res = fx($ctx);
$ctx->render(json => $res);
};
app->start;

2
packer/images/perl/cpanfile vendored Normal file
View File

@@ -0,0 +1,2 @@
requires "EV";
requires "Mojolicious::Lite";

6
packer/images/perl/fx.pl vendored Normal file
View File

@@ -0,0 +1,6 @@
sub fx {
my $ctx = shift;
return 'hello fx'
}
1;