ruby-on-rails - 何时以及为何应使用类和全局变量?

标签 ruby-on-rails ruby ruby-on-rails-3 variables

我正在使用 Ruby on Rails 3.0.7,我想知道何时以及为什么应该使用类 (@@) 和全局 ($) 变量,以及如果在 this case那些被正确使用。

P.S.:我问这个问题是因为我有 mentioned case-problem并在一个答案中建议使用类变量。如果在那种情况下使用它很好,我很感激你能解释我。

最佳答案

简短的回答是:从不

我是 ruby​​ 的新手,但我确实从其他语言中了解到这一点:全局变量从不是线程安全的。

沿着同样的思路,避免像瘟疫一样的单例模式,除非你只处理一个唯一的线程。


编辑:

顺便说一句,谷歌搜索 ruby​​ 依赖注入(inject)表明 Ruby 不需要任何它。好吧,告诉你什么。确实如此。

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

如果他们这样做了,他们也会更好地使用事件驱动服务器。

就目前情况而言,这是一团糟。

Event Machine 不是线程安全的。 Thin 和 Goliath 不是同一回事。机架异步基本上是猴子修补整个事情。 Passenger 使用 fork 并且只有在你安装带 rails 的 REE/1.8.7 时才聪明。 Mongrel 是线程安全的但 IO 阻塞。 Webrick 是单线程和 IO 阻塞的。 list 还在继续。太乱了。

关于ruby-on-rails - 何时以及为何应使用类和全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566029/

相关文章:

ruby-on-rails - !!some_object 是做什么的?

ruby-on-rails - 方法调用中object(..)后面两点的含义

ruby-on-rails - 基于 HABTM 类别的 Rails View

ruby-on-rails - Postgresql WHERE 子句添加 '' 左右?

ruby-on-rails-3 - 虚拟属性未移至 params 内的模型哈希

ruby-on-rails - 可以在 Thread::handle_interrupt block 之外异步处理 ruby​​ 异常吗?

ruby-on-rails - [if lt IE 9 的 Slim 模板引擎语法

ruby-on-rails - 尽管将属性列入白名单,但仍存在不允许的参数rails 4

ruby - 访问以变量为键的 Ruby 散列

ruby-on-rails - 新手 : ternary "if" condition syntax on VIEW