0
Fork 0
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:
Yurii Rashkovskii 2013-01-29 10:18:52 -08:00 committed by José Valim
parent ecb234693c
commit b69903435e
8 changed files with 112 additions and 0 deletions

View file

@ -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

View 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!
```

View 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

View file

@ -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

View file

@ -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

View 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

View file

@ -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

View file

@ -0,0 +1 @@
ExUnit.start