在 Rails 的目录中组织 GraphQL 文件

avi*_*met 5 ruby-on-rails graphql

运行时rails g graphql:install,会创建一组有用的基本类型文件,/app/graphql/types供我们在定义自己的类型时进行扩展。运行任何生成器时,它也会在同一文件夹中创建这些文件。我开始创建子目录,认为我可以为这个巨大的包罗万象的目录添加一些意义,但无法正确加载内容。

base_enum.rb由于每种类型( 、等)都有一个基本文件base_object.rb,因此我为每种类型(enum_typesobject_types等)的扩展名创建了一个文件夹。但这破坏了自动加载,我必须显式导入这些文件才能使用这些自定义类型。因此,在 的顶部query_type.rbmutation_type.rbapp/graphql/mutations/base_mutation.rb添加了以下内容:

['enum_typs', 'input_object_types', 'interface_types', 'object_types', 'scalar_types', 'union_types'].each do |dir|
  Dir[File.dirname(__FILE__) + "/#{dir}/*.rb"].each {|file| require file }
end
Run Code Online (Sandbox Code Playgroud)

这允许运行,但任何更改都会破坏自动加载,因此我必须在每次更改时重新启动服务器。我开始阅读这篇关于 Rails 站点上的自动加载的文章,但说实话,它有点超出了我的理解范围。尽管它让我相信我必须为我的文件夹找到正确的名称,或者为我的类型定义文件中正确定义的对象命名空间才能做到这一点。

有没有一种明智的方法可以将这些文件组织在子目录中,并且不会破坏自动加载?大多数项目是否只有这些文件的平面文件夹结构?

谢谢你!