【发布时间】:2013-02-20 03:36:09
【问题描述】:
Rails 具有 MVC 方法这一事实是否意味着它具有依赖注入?
或者有什么原因我们不讨论 Rails 中的依赖注入?
如果 Rails 确实有依赖注入,它是由什么组成的?
【问题讨论】:
-
这是一个很好的问题。我从阅读答案中学到了很多
标签: ruby-on-rails ruby spring dependency-injection
Rails 具有 MVC 方法这一事实是否意味着它具有依赖注入?
或者有什么原因我们不讨论 Rails 中的依赖注入?
如果 Rails 确实有依赖注入,它是由什么组成的?
【问题讨论】:
标签: ruby-on-rails ruby spring dependency-injection
IoC 是一把大锤,但 DI 每天都在 Ruby/Rails 中发生。无论何时:
def initialize(model_klass)
@model_klass = model_klass
end
这是 DI。这种范式也用在 Rails 源代码的各个地方。例如,Railties gem 本身主要是一个 DI 引擎。您可以注入您喜欢的 ORM、各种插件配置和生成器。
依赖注入有一个大而可怕的名字,但它归结为只是通过在运行时注入依赖关系的方式来解耦类依赖关系。
你使用什么语言并不重要,只要你需要在某个地方插入行为/代码,你可能正在使用它。
【讨论】:
依赖注入是一种范式,因此它存在于每一种面向对象的语言中。
是否有 Ruby 的 DI 框架 - 检查 this question
【讨论】:
我会说你不需要红宝石这样的东西......但如果你真的想要,有些人有workarounds。
【讨论】:
我在我的 Web 框架中使用这个 IoC https://github.com/alexeypetrushin/micon,大部分时间它保持隐藏状态,默默地解决了依赖项和组件初始化的问题,否则应该手动解决。
你可以在这里http://ruby-lang.info 看到它的运行情况(这个站点由 Rad 提供支持,我的网络框架 https://github.com/alexeypetrushin/rad_core)。
【讨论】:
Ruby 通常不需要依赖注入。 Jamis Buck blogged extensively 关于原因。值得一读。
【讨论】: