RoR自动加载子目录

时间:2017-07-04 07:59:45

标签: ruby-on-rails ruby

我在app /中创建了一个“services”目录,在那里我创建了一些类(服务)。现在它看起来像这样:

-app
   -services
      -class1
      -class2
      -class3
      -class4

目前,我已在config / spring.rb中添加了app / services

%w(
  .ruby-version
  .rbenv-vars
  tmp/restart.txt
  tmp/caching-dev.txt
  app/services
  app/errors
).each { |path| Spring.watch(path) }

所以我的服务类已经加载了。

但现在,我想这样做:

-app
   -services
      -dir1
         -class1
         -class2
      -dir2
         -class3
      -class4

我收到了错误:

  

未初始化的常量TransactionService :: AuthorizeRequest

如何自动加载dir和subdir?

1 个答案:

答案 0 :(得分:1)

Rails试图通过dirnames和amp;来猜测名称空间。文件名。因此,要拥有TransactionService :: AuthorizeRequest类名,您应该具有以下完整的结构:

app
- services
-- transaction_service
--- authorize_request.rb

你的课程看起来像:

module TransactionService
  class AuthorizeRequest
  end
end