2017-02-22 1 views
0

저는 다른 보석을 사용하는 rubygem (abc라고 부를 수 있습니다)을 만들었습니다.포크로 묶인 루비 젬에 의존하는 루비 젬을 어떻게 만들고 공개 할 수 있습니까?

내 발전이 진행됨에 따라 필자는 내가 의지 한 보석에 변화를 주어야한다는 것을 알게되었습니다. 그래서 나는 그들을 github에 포크하고 내 Gemfile에 추가했습니다.

source 'https://rubygems.org' 

gem 'xxx', '~> 0.0.6', :git => 'https://github.com/poulh/xxx.git' 
gem 'yyy', '~> 0.8.2', :git => 'https://github.com/poulh/yyy.git' 
gem 'zzz', '~> 0.0.14', :git => 'https://github.com/poulh/zzz.git' 

나는 다음 번들를 설치 사용이 근무하고 내가 내 개발을 계속할 수

require 'bundler/setup' 
require 'xxx' 
require 'yyy' 
require 'zzz' 

내 보석의 디렉토리에 lib 디렉토리/abc.rb에이 라인을 추가했다.

내 보석이 완성되어 rubygems.org에 게시하고 싶습니다.

그러나 위의 보석에 대한 사용자 지정 변경이 필요하며 변경 사항을 병합하기 위해 끌어 오기 요청을했을 때 소유자의 응답을받을 수 없습니다.

이상적 내 보석의 사용자는

gem install abc 

실행할 수 있습니다 그리고 그들은 그들의 방법에있을거야,하지만이를 테스트 할 때 보석은

  • 복제 ABC의 환매 특약없이 작동하지 않습니다
  • 실행 번들

를 설치 한 다음 추가 단계를 피할 수있다?

답변

2

this article에서 읽을 수 있듯이 보석의 의존성을 Gemfile에 넣는 것이 올바른 방법이 아닙니다. 대신, gemspec 행을 gemspec 파일에서 읽도록 지시하는 Gemfile에 두어야합니다. Gemfile을 개발 전용으로 생각하십시오. gemspec 만 누르면 종속성에 대한 스펙이됩니다.

here을 읽을 수 있으므로 gemspec에 git 소스를 넣을 수 없습니다.

이 점에서 필자의 권고는 분기 된 보석 소스 코드을 파일로 이동하고 gemspec에 의존성을 추가하는 것입니다. 다른 말로하면, 그것을 프로젝트의 일부로 삼으십시오.

README에 사용자가 gemfile에이 별도의 gem을 추가해야한다고 지정할 수도 있습니다. 그것은 당신을 위해 더 쉽지만 설치 과정에 또 다른 단계를 추가합니다.

+0

비록 내가 크게 동의하지만, 갈래 보석을 사용하는 것은 항상 관리하기가 어렵고 판매하기가 더 어렵습니다. 이상적으로는 보석을 고정 시켜서 현재의 상태와 호환이 가능하고 직계 의존성을 수행 할 수 있습니다. – tadman

+0

의견 감사합니다. 나는 보석을 포크로 만들었고 (그들은 수년 동안 업데이트되지 않았다) rubygems.org에서 내 자신의 버전을 만들었다. – Poul

관련 문제