Chicago Boss: a server framework inspired by Rails and written in Erlang
来源:互联网 发布:探地雷达测的数据图 编辑:程序博客网 时间:2024/05/16 11:09
官网:http://www.chicagoboss.org/
下载:https://github.com/evanmiller/ChicagoBoss/
代码:
1. 创建工程:
git clone https://github.com/evanmiller/ChicagoBoss.git
cd ChicagoBoss
make
make app PROJECT=myapp
cd ../myapp
./init-dev.sh
2. src/controller/myapp_greeting_controller.erl
-module(myapp_greeting_controller, [Req]).-compile(export_all).hello('GET', []) -> {ok, [{greeting, "Hello World!"}]}.list('GET', []) -> Greetings = boss_db:find(greeting, []), {ok, [{greetings, Greetings}]}.create('GET', []) -> ok;create('POST', []) -> GreetingText = Req:post_param("greeting_text"), NewGreeting = greeting:new(id, GreetingText), %{ok, SavedGreeting} = NewGreeting:save(), %{redirect, [{action, "list"}]}. case NewGreeting:save() of {ok, SavedGreeting} -> {redirect, [{action, "list"}]}; {error, ErrorList} -> {ok, [{errors, ErrorList}, {new_msg, NewGreeting}]} end.goodbye('POST', []) -> boss_db:delete(Req:post_param("greeting_id")), {redirect, [{action, "list"}]}.send_test_message('GET', []) -> TestMessage = "Free at last!", boss_mq:push("test-channel", TestMessage), {output, TestMessage}.pull('GET', [LastTimestamp]) -> {ok, Timestamp, Greetings} = boss_mq:pull("new-greetings", list_to_integer(LastTimestamp)), {json, [{timestamp, Timestamp}, {greetings, Greetings}]}.live('GET', []) -> Greetings = boss_db:find(greeting, []), Timestamp = boss_mq:now("new-greetings"), {ok, [{greetings, Greetings}, {timestamp, Timestamp}]}.
src/model/greeting.erl
-module(greeting, [Id, GreetingText]).-compile(export_all).validation_tests() -> [ {fun() -> length(GreetingText) > 0 end, "Greeting must be non-empty!"}, {fun() -> length(GreetingText) =< 140 end, "Greeting must be tweetable"} ].before_create() -> ModifiedRecord = set(greeting_text, re:replace(GreetingText, "masticate", "chew", [{return, list}])), {ok, ModifiedRecord}.after_create() -> boss_mq:push("new-greetings", THIS).
src/view/hello.html
<b>{{ greeting|upper }}</b>
src/view/list.html
<html><head> <title>{% block title %}Greetings!{% endblock %}</title></head><body>{% block body %}<ul> {% if greetings %} {% for greeting in greetings %} <li>{{ greeting.greeting_text }} {% endfor %} {% else %} <li>No greetings! {% endif %}</ul><p><a href="{% url action="create" %}">New greeting...</a></p><form method="post" action="{% url action="goodbye" %}">Delete:<select name="greeting_id"> {% for greeting in greetings %} <option value="{{ greeting.id }}">{{ greeting.greeting_text }} {% endfor %}</select><input type="submit"></form>{% endblock %}</body></html>
src/view/create.html
{% extends "greeting/list.html" %}{% block title %}A new greeting!{% endblock %}{% block body %}{% if errors %}<ul> {% for error in errors %} <li><font color=red>{{ error }}</font> {% endfor %}</ul>{% endif %}<form method="post"> Enter a new greeting: <textarea name="greeting_text">{% if new_msg %} {{ new_msg.greeting_text }}{% endif %}</textarea> <input type="submit"></form>{% endblock %}
src/view/live.html
<html><head> <title>Fresh hot greetings!</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> <script> function listen_for_events(timestamp) { $.ajax("/greeting/pull/"+timestamp, { success: function(data, code, xhr) { for (var i=0; i<data.greetings.length; i++) { var msg = data.greetings[i].greeting_text; $("#greeting_list").append("<li>"+msg); } listen_for_events(data.timestamp); } }); } $(document).ready(function() { listen_for_events({{ timestamp }}); }); </script></head><body><ul id="greeting_list"> {% for greeting in greetings %} <li>{{ greeting.greeting_text }} {% empty %} <li>No greetings! {% endfor %}</ul></body></html>
- Chicago Boss: a server framework inspired by Rails and written in Erlang
- 基于Erlang - Chicago Boss框架的TODO
- Spark - A tiny Sinatra inspired framework for creating web applications in Java 8 with minimal effor
- 81.You are currently located in Singapore and have connected to a remote database in Chicago.
- lighttpd start and running a cgi written in C
- A Calculator Supports Parentheses Written in C
- 行人检测-Pedestrian Detection Inspired by Appearance Constancy and Shape Symmetry
- A hexo theme inspired by vuejs.org 搭建了个博客
- prjProcess - 进程管理 - Written By HackerJLY In Universty - VB6 + API
- There Is No ‘I’ in Architecture written by Dave Quick
- Ajax in Rails 3.1 - A Roadmap by Andrea Singh | December 05, 2011
- Filters and Observers in rails
- erlang的日志库 A logging framework for Erlang/OTP
- a simple normal queue written in c under linux
- remove copyright box on a paper written in LaTex
- Papers written by Googlers
- Using WebLogic Server Clusters , Failover and Replication in a Cluster
- Killing a SPID and Checking Rollback progress in SQL Server
- C++位运算详解
- Low latency answer from discussion forum
- C/c++中几种操作位的方法
- 黑马程序员---String类
- 指针学习(转来的,非常好的东西,很赞)
- Chicago Boss: a server framework inspired by Rails and written in Erlang
- 写Ruby真的是需要很强的定力啊,看来团队协作还是需要Python
- HFT Latency related resources
- 复习C语言系列一:10进制整数转2至32任意进制数
- LeetCode题解: Binary Tree Zigzag Level Order Traversal
- 安卓通过USB控制Arduino
- python连接MySQL、MongoDB、Redis、memcache等数据库的方法
- python 文件和路径操作函数小结
- Python MD5文件生成码