Ruby on rails 模块作为Rails中的名称空间 出身背景

Ruby on rails 模块作为Rails中的名称空间 出身背景,ruby-on-rails,ruby,module,Ruby On Rails,Ruby,Module,我们有这样的文件结构: app/services/promo/promotion_expire.rb app/services/payment/code_pen_subscription.rb 以及下面定义的模块/类 促销_expire.rb 代码\u pen\u subscription.rb 问题 仅在生产中,我们有一个例外 名字​错误:​ 尤宁​最初的​化​常数​蚂蚁P​艾门​t::Pr​奥莫::​宣传片​提昂​火烧 为了解决这个问题,我们将Promo::PromotionExpir

我们有这样的文件结构:

app/services/promo/promotion_expire.rb
app/services/payment/code_pen_subscription.rb
以及下面定义的模块/类

促销_expire.rb

代码\u pen\u subscription.rb

问题 仅在生产中,我们有一个例外

名字​错误:​ 尤宁​最初的​化​常数​蚂蚁P​艾门​t::Pr​奥莫::​宣传片​提昂​火烧

为了解决这个问题,我们将Promo::PromotionExpire更改为::Promo::PromotionExpire,在来自_Promo的新_订阅中,它告诉ruby从模块层次结构的根目录查看。但我们不知道为什么

这仅在生产自动加载路径中发生? 为什么它只发生在CodePenSubscription中,而不发生在其他地方,因为我们在其他地方使用这个习惯用法。
module Promo
  class PromotionExpire

  end
end
module Payment
  class CodePenSubscription

    def new_suscription_from_promo
       ##stuff
       Promo::PromotionExpire.new.expire_single(@user, true)
       ##/stuff
    end

  end
end