ruby-on-rails - Ruby/Rails 依赖注入(inject)

标签 ruby-on-rails ruby dependency-injection

我正在尝试了解 Ruby/Rails 中的依赖注入(inject)。如何使用依赖注入(inject)删除 BuilderSaw 的显式引用?

class Builder
  attr_reader :saw

  def saw
    @saw ||= Saw.new(4)
  end

  def cut_wood
    Saw.saw
  end
end

class Saw
  attr_reader :blades

  def initialize(blades)
    @blades = blades
  end

  def saw
    # do something
  end
end

最佳答案

Saw 的初始化移动到默认参数。

class Builder   
  def saw(saw = Saw.new(4))
    @saw = saw
  end

  def cut_wood
    Saw.saw
  end
end

Builder#saw 现在支持依赖注入(inject)。

请记住从您的代码中删除 attr_reader :saw,因为它已被您的自定义阅读器覆盖。

关于ruby-on-rails - Ruby/Rails 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310940/

相关文章:

ruby-on-rails - 为 Rails 中的 Postgres 查询临时增加 'statement_timeout'?

ruby - 构建网站 - 使用 Ruby 的最佳实践和架构

c# - 基类中的 Autofac 属性注入(inject)

ruby-on-rails - 如何卸载 Ruby on Rails 并进行全新安装?

ruby-on-rails - rails 上的 ruby : Image downloads with Authentication/Authorization/Time outs

ruby-on-rails - Rails - 设计,如何禁用一些默认路由?

ruby-on-rails - Rspec 中的标签可以进行 AND 运算还是 OR 运算?

ruby - 我们需要同时需要 require 和 Gemfile 吗?

java - ClassCastException : org. springframework.orm.jpa.EntityManagerHolder 无法转换为 org.springframework.orm.hibernate5.SessionHolder

java - Dagger 2,supertypeInjector 为空