chicagoboss加mysql小记(2)

by kevin 4. 十二月 2012 00:12 >
chicagoboss默认的使用poolboy实现mysql连接池,但是连接池的最大连接数只有10,这个可以需要通过修改源代码boss_db_sup.erl(line:19)中的max_overflow。 使用连接池连接mysql,如果服务器设置了tcp_keepalive_time,那么如果一段时间后,如果了某个连接没有数据交互,相应的socket端口会被关闭,更糟糕的是无论是mysql的服务端,还是应用客户端,都不知道该socket已经关闭,下次请求是会提示"socket is closed",而且无法重新打开。解决的办法是修改mysql_recv.erl(line:98),添加tcp连接选项{keepalive, true},显式要求连接不断开。 chicagoboss支持在每个action执行之前,执行before_{action},执行之后,执行after_{action}。before_{action}还是比较好用的,after_{action}就很鸡肋了,因为你能处理的只有html,而不是一个action result,所以这个需要自己修改boss_web_controller.erl去扩展。 mysql中的date类型,无法被chicagoboss转换成有效的数据类型,使用datetime类型或者可以尝试修改boss_record_lib.erl的convert_value_to_type方法。 chicagoboss使用Django模板引擎,所以无法调用带参数的服务端方法。但也有个好处,支持模板继承。 boss_rebar.erl存在bug,boss.config中配置vm_name,如果是dev启动vm_name,则添加为启动参数-name,如果是正常启动,则为-sname。可以修改start_cmd方法和stop_cmd方法解决。 利用view生成html。  创建一个view,会生成一个{project}_view_{folder}_{filename}_html.beam文件 调用{project}_view_{folder}_{filename}_html:render(Vars)方法,返回{ok,[Binary]} 其中Vars=[{key, Value}], Binary=<<Html>>,需要生成html的时候可以这样使用。 mochiweb中的处理进程数,可以在mochiweb_socket_server.erl中修改参数acceptor_pool_size,默认为16。

ChicagoBoss加mysql小记(1)

by kevin 11. 十一月 2012 05:07 >
公司新项目,使用基于erlang的mvc框架chicagoboss,数据库选择mysql。写了一个月的代码,记录些细节的东西。 将mysql表映射成model的功能,在boos_db_adapter_mysql这个模块中实现。 数据库的每张表,都需要id字段,而且字段类型必须是整形。当然,可以通过修改源码去掉这个约束(研究中)。 表名必须是严格复数格式,例如:order->orders, man->men。(ps:inflector:pluralize方法存在bug) 数据库中的外键字段,要命名成{talbe_name}_id,table_name为主表名字。 实体属性的定义遵循Pascal命名(Word1Word2),同时对应数据库字段名word1_word2