我想在Rails应用中使用ruby Stripe library。它使用模块Stripe
作为其命名空间。
我想使用Stripe
作为ActiveRecord模型的命名空间,并将库模块重命名为StripeApi,以便例如StripeApi::Charge
指的是条带库,但Stripe::Charge
指的是我的Stripe
- 命名空间的ActiveRecord模型(因此例如Stripe::Charge.create(...)
创建数据库记录,而不仅仅是进行API调用)
有没有好办法呢?
(当然,我可以重命名我的命名空间,或尝试使用不同名称的模型,但我觉得有点难看。)
答案 0 :(得分:4)
Ruby中没有“命名空间”这样的东西。它只是一个变量(好,常数):
StripeApi = Stripe
动臂。你已经完成了。
确保将Stripe
设置为新模块,以便在您认为创建新模块时不会意外重新打开模块:
Stripe = Module.new
现在你可以做到
class Stripe::Charge; end
答案 1 :(得分:2)
我真的建议您重命名自己的命名空间,因为您可以完全控制代码。 否则,如果您想要更新Stripe gem的版本或搜索与您的命名空间相关的Bug以及原始的Stripe名称空间,那么它真的会变得很麻烦。
更改自己的命名空间而不是更改现有的gem(最终再次针对每个版本)要容易得多。