2013-07-27 87 views
1

我想爲ActiveMerchant Gem添加一些功能以測試PayPal Express網關,但已經嘗試了此請求,但在Github上被拒絕。Rails - 擴展Ruby Gem

我想一個類添加到ActiveMerchant計費模塊:

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

     # some codes here 

    end 
    end 
end 

我已經下載並拉動寶石到我的項目在當地和trhowing我的新文件在那裏成功地做到了這一點:

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

但是,當然,這不是最好的主意,因爲如果我需要它們,我必須手動提取任何更新。

有什麼辦法可以使用他們從RubyGems源代碼中提取的gem將類添加到他們的模塊中?

感謝

編輯

將它放到lib文件夾應該工作,但我的代碼需要從一些寶石類繼承,如:

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的安裝位置......這在服務器環境中會有所不同嗎?

+0

你應該能夠將您的新類添加到Rails應用程序的lib目錄(或其他位置,如果不是導軌),它應該'只是工作' – house9

+0

看到編輯,你有什麼想法?我想我需要知道bundle命令後,不同系統上的gem是如何定位的。 –

+0

它是一款Rails應用程序嗎? – house9

回答

1

您可能希望在GitHub上分發項目並將其更改添加到它。即使它只是一個班級。然後,在你的Gemfile,做到這一點:

gem "active_merchant", :git => "git://github.com/<your-user-name-here>/active_merchant.git" 
+0

非常好的主意,謝謝。對於其他人想要做類似 - > https://help.github.com/articles/fork-a-repo –

+0

這對我來說似乎非常極端。爲了創建一個寶石類型的子類而分派一個寶石;擊敗了面向對象編程的全部目的 - 重用。 – house9

+0

@ house9同意。尼斯回答:)不知何故,這種想法從來沒有發生過我。你的應該是被接受的答案。 – Kashyap

6

添加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 

不包括任何需要在你的假網關陳述,導軌(通過捆綁應要求一切從Gemfile中)

重啓軌道