Ruby on rails 何时以及为什么应该使用类和全局变量?

Ruby on rails 何时以及为什么应该使用类和全局变量?,ruby-on-rails,ruby,ruby-on-rails-3,variables,Ruby On Rails,Ruby,Ruby On Rails 3,Variables,我正在使用RubyonRails 3.0.7,我想知道什么时候以及为什么应该使用类(@)和全局($)变量,以及这些变量是否正确使用 注:我问这个问题是因为我有一个答案,在答案中建议使用类变量。如果在这种情况下使用它是好的,我很感激你能解释我。简短的回答是:永远不 我是ruby新手,但我确实从其他语言中了解了很多:全局变量是线程安全的 按照同样的思路,避免像瘟疫一样的单例模式,除非您只处理一个独特的线程 编辑: 另一方面,谷歌搜索ruby依赖注入表明ruby不需要任何依赖注入。告诉你吧。是的 因

我正在使用RubyonRails 3.0.7,我想知道什么时候以及为什么应该使用类(
@
)和全局(
$
)变量,以及这些变量是否正确使用


注:我问这个问题是因为我有一个答案,在答案中建议使用类变量。如果在这种情况下使用它是好的,我很感激你能解释我。

简短的回答是:永远不

我是ruby新手,但我确实从其他语言中了解了很多:全局变量是线程安全的

按照同样的思路,避免像瘟疫一样的单例模式,除非您只处理一个独特的线程


编辑:

另一方面,谷歌搜索ruby依赖注入表明ruby不需要任何依赖注入。告诉你吧。是的

因为人们总是认为它不存在,那里有堆积如山的宝石和图书馆,还有其他什么东西不存在。他们基本上假设您只有一个线程和IO阻塞。如果不是从一开始就这样做,它们可能是线程安全和非阻塞的。但目前,他们只是没有

如果他们这样做了,他们也会在事件驱动服务器上玩得更好

就目前情况来看,这是一个血腥的混乱


事件计算机不是线程安全的。瘦和歌利亚不是一回事。Rack async基本上就是对整个事情进行修补。乘客使用叉子,只有在安装REE/1.8.7和导轨时才智能。Mongrel是线程安全的,但IO阻塞。Webrick是单线程和IO阻塞。这个名单还有很多。这很混乱。

类变量可以用于快速而肮脏的缓存形式

class Thing
  def expensiveCall
    unless @@expensiveResult
      @@expensiveResult = ['foo','bar','baz'] # or whatever
    end
    @@expensiveResult
  end
end

请花点时间把这个问题变成一个独立的问题。你可以参考你原来的问题,但这应该是可以理解的,不需要去任何其他地方。@edgerunner-我更新了这个问题,以便更“独立地理解”。它仍然需要你的其他问题来理解。请花点时间让这个问题独立起来。(也就是说,如果你的另一个问题被删除了,这仍然是可以理解的)@edgerunner-我认为这基本上是一个一般性的问题。只有在以后,才能引用特定的案例研究\示例,以便更好地了解它们在实践中的用法。无论如何,我感谢你的建议。