Rails 所有控制器都可以读取的对象,要放在那里生成呢?

ripple · 2012年03月06日 · 最后由 ripple 回复于 2012年03月07日 · 3480 次阅读

有个类,只能产生一个 对象。

但是这个对象需要在所有控制器方法中用到。

单例模式啊,然后在哪里调都可以,哪个先调都可以

直接用这个类

见有人用 redis 时就把其定义为全局变量 $redis,或者你可以在 ApplicationController 定义 before_filter :get_xxx ... 的形式。

丢到 lib 下。直接使用。

写个 Model 比较好,lib 下面在开发模式无法即时更新修改的内容。

#3 楼 @leekelby before filter 每次进入这个控制器都会调用一遍吧?

#4 楼 @skandhas 这个类本身放在那里比较好呢?类本身也要 rails 起来之后执行以下,才能用把?

#3 楼 @leekelby 我把类对象的生产丢到 config/application.rb 里面了,然后该对象弄成全局变量,在所有控制器都可以调用了。逐步尝试更好的办法。

#1 楼 @azhao 现在只知道启动的时候会执行 application.rb 所以将需要启动执行的,比如单例类的定义都放在这里,但是感觉会这个地方会越放越乱,想知道最佳做法是怎样的,这样的场景,整个应用需要用到的类,或者需要启动执行的一段代码。

#10 楼 @ripple 放在 app/model 就可以全局都用。如果一定要在启动环节载入就放在 config/initializers。

#6 楼 @huacnlee lib 下刷新添加 autoload paths 即可,这种类型的代码我建议都是放到 lib 下 config.autoload_paths += %W(#{config.root}/lib)

本帖和http://ruby-china.org/topics/1651 讨论的同一个应用场景

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