Gem 到 Rails 的当地图书馆

Gem to local libray in Rails

我的老板让我写一个 gem 来为我们的应用程序包装一个 API (canvas) 消费者,我做到了并且成功了,但在最后一刻他问我不要使用 gem 方法,而是创建它的模型...我有一个模糊的想法,即为端点创建模型并将代码放入控制器中,但是 gem 是可以这么说,高度“模块化”,模块需要模块和 类 从其他 类 继承...有没有办法按原样包含所有内容并像本地安装的库一样使用?什么是最好的方法?我的 gem 依赖法拉第 net_http 适配器

我们经常使用 Service object 方法,可以在此处找到一篇很好的文章 https://blog.appsignal.com/2020/06/17/using-service-objects-in-ruby-on-rails.html

基本上,您将代码放在 app/services 中,然后抽象出所有配置和用法,这样您就可以:

result = AppServices::SubscriptionService.new({
           subscription_params: {
             subscription: @subscription,
             coupon: params[:coupon],
             token: params[:stripeToken]
           } 
         }).call

例如,您的代码可以存在于 app/services/canvas/lib 中。