论坛首页 综合技术论坛

从Rails到erlyweb - 笔记

浏览 5226 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-28  
写了几个月的Rails,终于开始把项目移植到erlyweb,这个笔记将记录移植过程中的一些常见问题,主要是Rails和erlyweb的同与不同。

1. 怎样处理params
Rails:

ruby 代码
 
  1. p = params.fetch(:p, "1")
  2. s = params.fetch(:s, @@RECORDS_PER_PAGE) 
  3. p = p.to_i  
  4. s = s.to_i  


erlyweb:
mymodel_controller.erl:

js 代码
 
  1. -module(mymodel_controller).  
  2. -define(RECORDS_PER_PAGE, "9").  
  3.   
  4. -export([get/1]).  
  5.   
  6. get(A) ->  
  7.     %% A是yaws传进来的Arg, 包含了用户请求的所有内容  
  8.     P = yaws_params:getopt("p", A, "1"),  
  9.     S = yaws_params:getopt("s", A, ?RECORDS_PER_PAGE),  
  10.     Page = list_to_integer(P), %% erlang里String就是list  
  11.     Size = list_to_integer(S),  
  12.   
  13.     %% 查找表mymodel的记录  
  14.     Records = mymodel:find_range((Page - 1) * Size, Size),  
  15.   
  16.     %% 返回plain text形式的记录  
  17.     {response, [{html, mymodel:to_iolist(Records)}]}.  



在apps/myapps/lib下写了一个yaws_params.erl:

js 代码
 
  1. -module(yaws_params).  
  2.   
  3. -export([  
  4.          getopt/2,  
  5.          getopt/3  
  6.         ]).  
  7.   
  8. getopt(Key, Arg) ->  
  9.     getopt(Key, Arg, undefined). %% ruby里有nil, erlang里有undefined  
  10.   
  11. %% Usage: getopt(Key, Arg, Default)  
  12. getopt(Key, Arg, Default) ->  
  13.     Params = yaws_api:parse_query(Arg), %% in form of [{p, "2"}, {s, "1"}] etc.  
  14.     case lists:keysearch(Key, 1, Params) of  
  15.         false ->  
  16.             Default;  
  17.         {value, Tuple} ->  
  18.             Val = element(2, Tuple), %% erlang里element从1开始计数  
  19.             if  
  20.                 Val == undefined -> Default;  
  21.                 true -> Val  
  22.             end  
  23.     end.  



[To be continued]
   发表时间:2007-04-28  
这种经验很有用,特别想了解Erlang在处理Web内容这一块的优缺点
0 请登录后投票
   发表时间:2007-05-06  
期待进一步的经验分享
0 请登录后投票
   发表时间:2007-06-12  
你用Rails多半是开发web吧?Erlang处理字符串和数据库都很差,而开发web正式需要这方面强大,这正好Rails的强项。何必用Erlang的短处?
0 请登录后投票
   发表时间:2007-06-13  
song8159 写道
Erlang处理字符串和数据库都很差

不知道你为什么会有这个印象,我用Erlang处理字符串和数据库没觉得有什么差。
0 请登录后投票
   发表时间:2007-06-13  
刚刚接触Erlang,感觉处理字符串、特别是中文字符串没有ruby方便,应该是对api还不熟悉吧,能说说你为什么要把Rails项目转向eryweb?是性能不能满足要求?还是其它的原因,eryweb开发web相比Rails的优缺点是?目前Erlang和eryweb的中文资料太少了,
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics