1

我想向 ActiveMerchant gem 添加一些功能以测试 PayPal Express 网关,为此尝试了一个拉取请求,但在 Github 上被拒绝了。

我想向 ActiveMerchant Billing 模块添加一个类:

module ActiveMerchant #:nodoc:
  module Billing #:nodoc:
    class PaypalBogusGateway < BogusGateway

      # some codes here

    end
  end
end

我通过在本地下载 gem 并将其拉入我的项目并将我的新文件放在那里成功地做到了这一点:

#Gemfile
gem 'activemerchant', '1.34.1', path: "vendor/gems/activemerchant-1.34.1", require: 'active_merchant'

但是,当然,这不是最好的主意,因为如果需要,我必须手动提取任何更新。

有什么方法可以使用从 RubyGems 源中提取的 gem 将类添加到他们的模块中?

谢谢

编辑

将它放在 lib 文件夹中应该可以工作,但我的代码需要 gem 中的一些类来继承,例如:

require File.dirname(__FILE__) + '/paypal/paypal_common_api'
require File.dirname(__FILE__) + '/paypal/paypal_express_response'
require File.dirname(__FILE__) + '/paypal_express_common'

将 File.dirname( FILE ) 替换为 gem 的安装位置...这在服务器环境中会有所不同,对吧?

4

2 回答 2

7

将 activemerchant 添加到 Gemfile,捆绑安装

config/application.rb确保 lib 包含在自动加载路径中

# need to uncomment or add this to the configuration
config.autoload_paths += %W(#{config.root}/lib)

使用嵌套目录将您的类放在文件中以匹配模块

# lib/active_merchant/billing/paypal_bogus_gateway.rb

不要在你的虚假网关、rails 中包含任何 require 语句(通过 bundler 应该需要 Gemfile 中的所有内容)

重新启动导轨

于 2013-07-28T17:06:38.480 回答
1

您可能只想在 GitHub 上 fork 项目并将您的更改添加到其中。哪怕只是一堂课。然后,在您的 中Gemfile,执行以下操作:

gem "active_merchant", :git => "git://github.com/<your-user-name-here>/active_merchant.git"
于 2013-07-27T23:30:25.417 回答