3

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

我想Stripe用作我的 ActiveRecord 模型的命名空间,并将库模块重命名为 StripeApi 之类的东西,以便例如StripeApi::Charge引用 Stripe 库,但Stripe::Charge引用我的Stripe-namespaced ActiveRecord 模型(以便例如Stripe::Charge.create(...)创建数据库记录,而不是只是进行 API 调用)。

有没有好的方法来做到这一点?

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

4

2 回答 2

4

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

StripeApi = Stripe

繁荣。你完成了。

确保设置Stripe为新模块,以免在您认为正在创建新模块时不小心重新打开模块:

Stripe = Module.new

现在你可以做

class Stripe::Charge; end
于 2013-07-11T18:54:50.643 回答
2

我真的建议重命名您自己的命名空间,因为您可以完全控制代码。否则,如果您想更新 Stripe gem 的版本或搜索与您的命名空间以及原始 Stripe 命名空间相关的错误,这真的会让人头疼。

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

于 2013-07-11T05:53:47.967 回答