mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Elixir hello world example
This commit is contained in:
parent
ecb234693c
commit
b69903435e
8 changed files with 112 additions and 0 deletions
|
@ -19,6 +19,9 @@ Cowboy Examples
|
||||||
* [echo_post](./examples/echo_post):
|
* [echo_post](./examples/echo_post):
|
||||||
parse and echo a POST parameter
|
parse and echo a POST parameter
|
||||||
|
|
||||||
|
* [elixir_hello_world](./examples/elixir_hello_world):
|
||||||
|
simplest example application with Elixir
|
||||||
|
|
||||||
* [hello_world](./examples/hello_world):
|
* [hello_world](./examples/hello_world):
|
||||||
simplest example application
|
simplest example application
|
||||||
|
|
||||||
|
|
42
examples/elixir_hello_world/README.md
Normal file
42
examples/elixir_hello_world/README.md
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
Elixir Hello World
|
||||||
|
==================
|
||||||
|
|
||||||
|
This is an example of running Cowboy with [Elixir](http://elixir-lang.org).
|
||||||
|
|
||||||
|
You need Elixir installed
|
||||||
|
([instructions here](http://elixir-lang.org/getting_started/1.html))
|
||||||
|
to run this example. After installing Elixir, you should have both
|
||||||
|
`elixir` and `mix` executables available.
|
||||||
|
|
||||||
|
You also need [rebar](https://github.com/rebar/rebar) in your PATH
|
||||||
|
to compile dependencies.
|
||||||
|
|
||||||
|
Then type the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
mix deps.get
|
||||||
|
```
|
||||||
|
|
||||||
|
The command above will fetch all dependencies and compile them.
|
||||||
|
|
||||||
|
You can then start the Erlang node with the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
mix run --no-halt
|
||||||
|
```
|
||||||
|
|
||||||
|
Then point your browser to localhost:8080.
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
$ curl -i http://localhost:8080
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
connection: keep-alive
|
||||||
|
server: Cowboy
|
||||||
|
date: Fri, 28 Sep 2012 04:10:25 GMT
|
||||||
|
content-length: 12
|
||||||
|
|
||||||
|
Hello world!
|
||||||
|
```
|
13
examples/elixir_hello_world/lib/elixir_hello_world.ex
Normal file
13
examples/elixir_hello_world/lib/elixir_hello_world.ex
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
defmodule ElixirHelloWorld do
|
||||||
|
use Application.Behaviour
|
||||||
|
|
||||||
|
def start(_type, _args) do
|
||||||
|
dispatch = :cowboy_router.compile([
|
||||||
|
{:_, [{"/", ElixirHelloWorld.TopPageHandler, []}]}
|
||||||
|
])
|
||||||
|
{:ok, _} = :cowboy.start_http(:http, 100,
|
||||||
|
[port: 8080],
|
||||||
|
[env: [dispatch: dispatch]])
|
||||||
|
ElixirHelloWorld.Supervisor.start_link
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
defmodule ElixirHelloWorld.Supervisor do
|
||||||
|
use Supervisor.Behaviour
|
||||||
|
|
||||||
|
def start_link do
|
||||||
|
:supervisor.start_link(__MODULE__, [])
|
||||||
|
end
|
||||||
|
|
||||||
|
def init([]) do
|
||||||
|
children = []
|
||||||
|
supervise children, strategy: :one_for_one
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
defmodule ElixirHelloWorld.TopPageHandler do
|
||||||
|
def init(_transport, req, []) do
|
||||||
|
{:ok, req, nil}
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle(req, state) do
|
||||||
|
{:ok, req} = :cowboy_req.reply(200, [], "Hello world!", req)
|
||||||
|
{:ok, req, state}
|
||||||
|
end
|
||||||
|
|
||||||
|
def terminate(_reason, _req, _state), do: :ok
|
||||||
|
end
|
20
examples/elixir_hello_world/mix.exs
Normal file
20
examples/elixir_hello_world/mix.exs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
defmodule ElixirHelloWorld.Mixfile do
|
||||||
|
use Mix.Project
|
||||||
|
|
||||||
|
def project do
|
||||||
|
[ app: :elixir_hello_world,
|
||||||
|
version: "0.0.1",
|
||||||
|
deps: deps ]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Configuration for the OTP application
|
||||||
|
def application do
|
||||||
|
[ mod: { ElixirHelloWorld, [] },
|
||||||
|
applications: [:cowboy] ]
|
||||||
|
end
|
||||||
|
|
||||||
|
defp deps do
|
||||||
|
[ {:ranch, github: "extend/ranch", tag: "0.6.1"},
|
||||||
|
{:cowboy, github: "extend/cowboy"} ]
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
Code.require_file "../test_helper.exs", __FILE__
|
||||||
|
|
||||||
|
defmodule ElixirHelloWorldTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
|
||||||
|
test "the truth" do
|
||||||
|
assert true
|
||||||
|
end
|
||||||
|
end
|
1
examples/elixir_hello_world/test/test_helper.exs
Normal file
1
examples/elixir_hello_world/test/test_helper.exs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ExUnit.start
|
Loading…
Add table
Add a link
Reference in a new issue