加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在Rails中将服务目录添加到加载路径?

发布时间:2020-12-17 03:29:36 所属栏目:百科 来源:网络整理
导读:在我的Rails项目中,我想在app文件夹中添加services目录并包含一些服务对象. 所以我想说我想添加app / services / foo / test.rb,它们看起来像: module Services module Foo class Test end endend 在我的config / application.rb中,我添加了: config.paths
在我的Rails项目中,我想在app文件夹中添加services目录并包含一些服务对象.

所以我想说我想添加app / services / foo / test.rb,它们看起来像:

module Services
  module Foo
    class Test

    end
  end
end

在我的config / application.rb中,我添加了:

config.paths.add File.join('app','services'),glob: File.join('**','*.rb')
config.autoload_paths += Dir[Rails.root.join('app','services','*')]

但是,当我尝试在控制台中加载文件时,它不起作用:

?  rails c
Loading development environment (Rails 4.1.4)
[1] pry(main)> Services::Foo::Test
NameError: uninitialized constant Services

任何帮助我该如何解决这个问题?

解决方法

首先,app文件夹下的代码将在没有任何配置的情况下加载.

我认为问题是文件夹结构与您的类定义不匹配.

所以这个配置会起作用:

应用程序/服务/富/ test.rb

module Foo
  class Test
  end
end

我的线索是,例如我们有app / controllers / api / v1 / users_controllers.rb,类常量将是Api :: V1 :: UsersController,而不是Controllers :: Api :: V1 :: UsersController

更新

通常,我们通常使用FooServices代替Foo,它更清晰,例如:

应用程序/服务/ foo_services / bar_parser.rb

module FooServices
  class BarParser
    # Do stuff
  end
end

所以我们理解foo_services文件夹中的每个类都是与Foo相关的服务

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读