2013-07-27 3 views
1

PayPal Express 게이트웨이를 테스트하기 위해 ActiveMerchant gem에 일부 기능을 추가하고 싶습니다. 당겨 받기 요청이 시도되었지만 Github에서 거절되었습니다.레일즈 - 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 소스에서 가져온 보석을 사용하여 모듈에 클래스를 추가 할 수있는 방법이 있습니까? 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) 어디서나 보석이 설치됩니다 ... 이것은 서버 환경에 따라 다를 것입니다.

+0

당신은 레일 응용 프로그램의 lib 디렉토리에 새 클래스를 추가 할 수 있어야합니다 (Gemfile에 이르기까지 모든 것을 요구해야 들러 통해)

다시 시작 레일 당신의 가짜 게이트웨이의 문, 레일을 필요로 포함되지 않습니다 (또는 레일이 아닌 다른 위치) '그냥 작동해야합니다' – house9

+0

편집을 참조하십시오. 어떤 생각이 들었습니까? 번들 명령 후에 보석들이 다른 시스템에 어떻게 위치해 있는지 알아야한다고 생각합니다. –

+0

레일 앱입니까? – house9

답변

1

GitHub에서 프로젝트를 포크하고 변경 사항을 추가 할 수 있습니다. 그것이 단일 클래스 일지라도. ,

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

는 Gemfile에 activemerchant 추가 config/application.rb에서

확실 lib 디렉토리가

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

장소 클래스 자동로드 경로에 포함되어 있는지 확인 설치 번들 : 그리고, 당신의 Gemfile에 이렇게 중첩 된 디렉토리를 사용하여 모듈을 일치시키는 파일에서

# lib/active_merchant/billing/paypal_bogus_gateway.rb 
,210

는이