0

我想将依赖注入与 graphql-ruby 一起使用。

IE

module CustomerCredits
  module Types
    class QueryType < GraphQL::Schema::Object

      description 'The query root of this schema'

      field :filter_users, [Types::UserType], null: false do
        argument :parameters, InputTypes::UserFilterParameters, required: true
      end

      # resolvers

      def filter_users(arguments) 
        repo = UserRepository.new(complex_arguments) # I want to inject the dependency UserRepository
    
        repo.filtered_users(**arguments[:parameters])
      end

    end
  end
end

initialize无法使用依赖注入,因为QueryType它是由 graphql-ruby 实例化的。

4

1 回答 1

1

正如您所提到的,通过初始化程序进行注入可能不是非常简单,因此如果您想完全进入依赖注入和控制反转,您可以利用像Dry Auto Inject这样的 IOC 容器库。我知道这可能是一个成熟的解决方案,并且对于您的用例来说可能过于繁重(不确定),但是由于您已经在 Ruby 中使用存储库,因此可能不会。

于 2021-02-09T07:17:31.107 回答