我们有这个文件结构:
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
更改为new_subscription_from_promo
,这告诉ruby从模块层次结构的根目录查看。但我们不知道为什么
CodePenSubscription
而不是其他地方,因为我们在其他地方使用这个习惯用法。