【问题标题】:Scope of POROs in RailsRails 中 PORO 的范围
【发布时间】:2019-08-22 20:29:04
【问题描述】:

似乎在 PORO 上仅使用类方法(如 Rails 应用程序中的 Service)并由控制器调用时,似乎在所有请求中只创建了一个 Service 对象的实例。

我知道 Rails 会根据请求创建新的控制器和模型实例,但还没有看到任何关于 Rails 如何处理您自己的 PORO 的文档。

你的理解是什么?

【问题讨论】:

  • Ruby 并没有真正称它们为“PORO”,它只是称它们为...对象。 Ruby 中的一切都是对象,因此实际上不需要像在其他语言中对象是特殊情况那样进行区分。

标签: ruby-on-rails ruby ruby-on-rails-3 scope


【解决方案1】:

您可以假设大多数类实例都具有请求范围 - 无论它们是控制器、模型还是服务 (PORO)。如果它们被全局对象引用(例如 rails 配置),它们可以具有更广泛的范围。

类有点不同 - 它们在应用程序启动时加载一次,然后它们在内存中。如果您只使用类方法,则意味着您使用的是类,而不是实例,因此您具有全局范围。

【讨论】:

  • 类对象在进程的生命周期中存在。该过程可以是许多过程之一,并且可以在请求完成后终止。 rails s 不是真实生产环境的准确表示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2016-07-11
相关资源
最近更新 更多