背景
我们有这个文件结构:
app/services/promo/promotion_expire.rb
app/services/payment/code_pen_subscription.rb
以及下面定义的模块/类。
Promotion_expire.rb
module Promo
class PromotionExpire
end
end
code_pen_subscription.rb
module Payment
class CodePenSubscription
def new_suscription_from_promo
##stuff
Promo::PromotionExpire.new.expire_single(@user, true)
##/stuff
end
end
end
问题
仅在生产中,我们有一个例外
NameError: uninitialized constant Payment::Promo::PromotionExpire
为了解决这个问题,我们更改Promo::PromotionExpire
为::Promo::PromotionExpire
in new_subscription_from_promo
,它告诉 ruby 从模块层次结构的根目录查找。但我们不知道为什么
- 这只发生在生产中(自动加载路径?)
- 为什么它只发生在
CodePenSubscription
,而不是其他地方,因为我们在其他地方使用这个成语。