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

linjunhalida · October 03, 2014 · Last by sickate replied at October 08, 2014 · 3005 hits

有一个问题,为什么 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

You need to Sign in before reply, if you don't have an account, please Sign up first.