大家在Clojure中都用什么做配置文件

81 views
Skip to first unread message

Mingqi Shao

unread,
Jun 23, 2013, 11:24:18 PM6/23/13
to cn-cl...@googlegroups.com
我在英文的clojure group里面问过同样的问题,没有得到满意的答案,再这里再问一下。我在找一个Clojure应用程序下面的配置文件,最好满足如下需求,优先级从高到低:

1.  支持结构化的数据配置,比如字典key-value,list等,就像JSON或者XML所支持数据结构那样,所以,普通的.ini或者.properties文件都很慢满足要求
2. 语法简单,可读性强。XML是一个反面教材,书写和解析起来都在复杂,JSON和YAML是比较好的列子
3. 支持多个环境。比如我希望我的代码打包完之后,在测试环境测试过之后,直接就发布到生产环境,不需修改配置文件,从新打包。比较常用的办法是准备两个配置文件,一个是dev.conf,一个是dev.conf,然后通过环境变量,或者CLI参数告诉程序应该选择那个配置文件,但是问题是如果配置信息很多,测试环境和测试环境的配置大部分都相同,只有少数的配置不同的时候,重复的配置写两边,显得很冗余。
4. 容易组织和管理。一个系统好几个模块很常见,每个模块都有自己的配置信息,最好是个个模块的配置单独在一个文件里面,这样部署的时候,就不需要先把所有配置merge到一个文件里面再打包部署。
5. 容易覆盖。因为经常有些情况下,比如调试的时候,需要零时修改一个配置信息,最好有个方法能够在不需要修改原来的配置文件的情况下,很容易的覆盖掉原来的配置。

不满足这些条件不要紧,来谈谈你们都如何配置你的程序?

崔钢

unread,
Jun 23, 2013, 11:25:20 PM6/23/13
to cn-cl...@googlegroups.com
就用clojurefile。比如:
(ns sqlRes.SQLFile)

(def sqls
  {
    :user "select * from T_SCS_USER where ROLE_ID<3"
....



--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 cn-clojure+...@googlegroups.com
要向此网上论坛发帖,请发送电子邮件至 cn-cl...@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/cn-clojure。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
 
 



--
May the force be with you.

dennis zhuang

unread,
Jun 23, 2013, 11:26:25 PM6/23/13
to cn-cl...@googlegroups.com
直接用clojure文件配置是可以的,加上nrepl做动态修改参数。

我们好像都是用environ这个库,直接环境变量注入,但是不支持一些结构化的参数了。
庄晓丹
Email:        killm...@gmail.com xzh...@avos.com
Site:           http://fnil.net
Twitter:      @killme2008


Sun Ning

unread,
Jun 23, 2013, 11:42:09 PM6/23/13
to cn-cl...@googlegroups.com, dennis zhuang
我是倾向于用环境变量,虽然只支持字符串。
配置得越复杂,越像是在配置文件里写程序,越像spring

On Mon 24 Jun 2013 11:26:25 AM CST, dennis zhuang wrote:
> 直接用clojure文件配置是可以的,加上nrepl做动态修改参数。
>
> 我们好像都是用environ这个库,直接环境变量注入,但是不支持一些结构化的
> 参数了。
>
>
> 在 2013年6月24日上午11:25,崔钢 <clark...@gmail.com
> <mailto:clark...@gmail.com>>写道:
>
> 就用clojurefile。比如:
> (ns sqlRes.SQLFile)
>
> (def sqls
> {
> :user "select * from T_SCS_USER where ROLE_ID<3"
> ....
>
>
>
> 在 2013年6月24日上午11:24,Mingqi Shao <ms...@tripadvisor.com
> <mailto:ms...@tripadvisor.com>>写道:
>
> 我在英文的clojure group里面问过同样的问题,没有得到满意的答
> <mailto:cn-clojure%2Bunsu...@googlegroups.com>。
> 要向此网上论坛发帖,请发送电子邮件至
> cn-cl...@googlegroups.com <mailto:cn-cl...@googlegroups.com>。
> 通过以下网址访问此论坛:http://groups.google.com/group/cn-
> clojure。
> 要查看更多选项,请访问 https://groups.google.com/groups/opt_out
>
>
>
>
>
> --
> May the force be with you.
>
> --
> 中文社区博客:http://blog.clojure.cn/
> 中文问答网站:http://ask.clojure.cn/
> 中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
> ---
> 您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到
> cn-clojure+...@googlegroups.com
> <mailto:cn-clojure%2Bunsu...@googlegroups.com>。
> 要向此网上论坛发帖,请发送电子邮件至 cn-cl...@googlegroups.com
> <mailto:cn-cl...@googlegroups.com>。
> 通过以下网址访问此论坛:http://groups.google.com/group/cn-clojure
> 要查看更多选项,请访问 https://groups.google.com/groups/opt_out
>
>
>
>
>
> --
> 庄晓丹
> Email: killm...@gmail.com <mailto:killm...@gmail.com>
> xzh...@avos.com <mailto:xzh...@avos.com>
> Site: http://fnil.net <http://fnil.net>
> Twitter: @killme2008
>
>
> --
> 中文社区博客:http://blog.clojure.cn/
> 中文问答网站:http://ask.clojure.cn/
> 中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
> ---
> 您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 cn-
> clojure+u...@googlegroups.com

Shen, Feng

unread,
Jun 24, 2013, 3:06:01 AM6/24/13
to cn-cl...@googlegroups.com
个人比较喜欢命令行参数, 然后有个 --help 打印出参数列表,默认值,简短说明

支持key-value ,list等,有些困难。

仅供参考


沈锋



2013/6/24 Mingqi Shao <ms...@tripadvisor.com>

--
中文社区博客:http://blog.clojure.cn/
中文问答网站:http://ask.clojure.cn/
中文邮件列表:https://groups.google.com/d/forum/cn-clojure?hl=zh-CN
---
您收到此邮件是因为您订阅了 Google 网上论坛的“CN-Clojure”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 cn-clojure+...@googlegroups.com

Xin Yu

unread,
Jul 9, 2013, 10:19:09 PM7/9/13
to cn-cl...@googlegroups.com
支持,Clojure自己的语法做配置文件挺合适的,
想简单还是做复杂了自己也能控制,
最多就是按照习惯定义自己的宏就好了。

Yu.

Ruiyun Wen

unread,
Jul 9, 2013, 11:13:58 PM7/9/13
to cn-clojure
我也是用的clojure代码文件,当作简洁的xml来用
Reply all
Reply to author
Forward
0 new messages