如何重命名Ruby库模块的命名空间?

时间:2013-07-11 05:12:46

标签: ruby-on-rails ruby module

我想在Rails应用中使用ruby Stripe library。它使用模块Stripe作为其命名空间。

我想使用Stripe作为ActiveRecord模型的命名空间,并将库模块重命名为StripeApi,以便例如StripeApi::Charge指的是条带库,但Stripe::Charge指的是我的Stripe - 命名空间的ActiveRecord模型(因此例如Stripe::Charge.create(...)创建数据库记录,而不仅仅是进行API调用)

有没有好办法呢?

(当然,我可以重命名我的命名空间,或尝试使用不同名称的模型,但我觉得有点难看。)

2 个答案:

答案 0 :(得分:4)

Ruby中没有“命名空间”这样的东西。它只是一个变量(好,常数):

StripeApi = Stripe

动臂。你已经完成了。

确保将Stripe设置为新模块,以便在您认为创建新模块时不会意外重新打开模块:

Stripe = Module.new

现在你可以做到

class Stripe::Charge; end

答案 1 :(得分:2)

我真的建议您重命名自己的命名空间,因为您可以完全控制代码。 否则,如果您想要更新Stripe gem的版本或搜索与您的命名空间相关的Bug以及原始的Stripe名称空间,那么它真的会变得很麻烦。

更改自己的命名空间而不是更改现有的gem(最终再次针对每个版本)要容易得多。

相关问题