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):
|
||||
parse and echo a POST parameter
|
||||
|
||||
* [elixir_hello_world](./examples/elixir_hello_world):
|
||||
simplest example application with Elixir
|
||||
|
||||
* [hello_world](./examples/hello_world):
|
||||
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