Rails Rails /lib 目录为什么不放在 app 下面?

linjunhalida · 2014年10月03日 · 最后由 sickate 回复于 2014年10月08日 · 3005 次阅读

有一个问题,为什么 lib 目录要单独放,而不是放在 app 下面?想不太明白,有谁清楚的?

app 里面是你自己写的,lib 里面是别人写的

@blacktulip 那么我自己写的模块,是否要放到 app/lib 里面呀?

#2 楼 @linjunhalida 你愿意的话当然可以啊,不过一般还是分 MVC 目录放的吧

@blacktulip 比如写一堆工具方法,不太好放到 MVC 里面,我一般丢 lib。。

#4 楼 @linjunhalida 不是有 helper 目录么

@blacktulip helper 只能在 view 里面用。。

#6 楼 @linjunhalida 其实你自己写好的模块,如果不是 app specific 的,放 /lib 也很正当啊

自己的库,别人的库都是库啊~MVC 之外的库我都放 lib 下,我觉得也应该放 lib 下面,我的 helper 目录下的东西也只是给 view 用,controller 里面写的 helper V 和 C 通用

#6 楼 @linjunhalida helper 也可以在 C 中用的,只是需要手动引入

@jyootai helper 感觉只是在 view 里面用。。

#10 楼 @linjunhalida 在 ApplicationController 中引入,其它的 C 都是继承 ApplicationController,因此 helper 也可以在其它 C 中用

#10 楼 @linjunhalida 不一定吧。不然 devise 的 current_user 岂不是只能在 controller 里或者 view 里用了?rails 提供了helper_method让 controller 里的方法能够在 view 里用。

#10 楼 @linjunhalida 缺省是这样,不过你可以手动声明

#12 楼 @Tony612 是的,可以手动声明,但是感觉逻辑上面,helper 应该只是限于 view。毕竟 helper 就是 helper,不是 lib。

我觉得吧 放 lib/ 里是为了分享给非 app/ 目录下的代码用 比如 config/, scripts/ 神马的

#15 楼 @iBachue 我感觉这个原因比较靠谱。不过其实 app 目录下的代码也可以被 scripts 或者 rake 任务之类的用。比如 sidekiq 会把 workers 放到 app 下面,然后你写 rake loader 任务的话也可以调用 workers

需要 登录 后方可回复, 如果你还没有账号请 注册新账号