"rake gempec:validate"가 항상 실패
9280 단어 jeweler
묘사
나는 오늘 현재의 한 항목에서 이 점을 본 적이 없다. 그러나 이것은 나의 잘못이 아니라는 것을 확보하기 위해 나는 처음부터 시도했다.[12:53][~/projects]$ jeweler dummy
create .gitignore
# etc.
Jeweler has prepared your gem in dummy
[12:53][~/projects]$ cd dummy
버전 파일은 먼저 존재해야 만들 수 있습니다.GEMPEC은 다음과 같은 방법으로 검증할 수 있습니다.[12:53][~/projects/dummy(master)]$ rake version:write
(in /Users/steve/projects/dummy)
Updated version: 0.0.0
gemspec를 확인하려고 합니다.[12:54][~/projects/dummy(master)]$ rake gemspec:validate
(in /Users/steve/projects/dummy)
dummy.gemspec is invalid. See the backtrace for more details.
rake aborted!
undefined method `prerelease?' for nil:NilClass
(See full trace by running task with --trace)
나는 --trace를 사용하여 작업을 실행합니다.[12:54][~/projects/dummy(master)]$ rake gemspec:validate --trace
(in /Users/steve/projects/dummy)
** Invoke gemspec:validate (first_time)
** Invoke version_required (first_time)
** Execute version_required
** Execute gemspec:validate
dummy.gemspec is invalid. See the backtrace for more details.
rake aborted!
undefined method `prerelease?' for nil:NilClass
/opt/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.3.5/lib/rubygems/specification.rb:1317:in `block in <class:Specification>'
dummy.gemspec:9:in `block (2 levels) in parse'
/opt/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.3.5/lib/rubygems/specification.rb:421:in `initialize'
dummy.gemspec:7:in `new'
dummy.gemspec:7:in `block in parse'
/opt/local/lib/ruby/gems/1.9.1/gems/jeweler-1.4.0/lib/jeweler/gemspec_helper.rb:56:in `eval'
/opt/local/lib/ruby/gems/1.9.1/gems/jeweler-1.4.0/lib/jeweler/gemspec_helper.rb:56:in `block in parse'
나는 이것이 gemspec_helper.parse
방법을 생성하고 전달하는 '가상' (파일 기반) gmpec에서 버전 문자열을 분배하는 데 실패했기 때문이라는 것을 발견했다.ValidateGetSpec 명령 클래스의 버전 추가 작업은 WriteGetSpec 명령 클래스와 다른 것 같습니다.(보석을 만드는 데 쓰이는 진정한 젬스펙은 일을 잘한다.)그러나 쥬얼러 인프라에 대한 나의 이해는 아직 투철하지 않아서 어떤 버전의 코드를 추가해야 할지, 아니면 언제 추가해야 할지 확정할 수 없다.그래서 나는 단지 문제를 간단하게 보고했을 뿐이지 그것을 해결하려고 시도한 것이 아니다.
토론 #1
ValidateGemspec은 디스크에 있는gemspec가 유효한지 확인하는 데 사용됩니다.만약 그것을 만들지 않았다면, 검증할 내용이 없기 때문에 실패할 것입니다.6410B4854DB427D4D4C574211986D01DACD1344F6
토론 #2
에 이 작업이 존재하지 않으면 잃어버린 오류 메시지가 표시됩니다. 저도 지금 이 오류를 보았습니다.gempec는 존재합니다. 왜냐하면 라크 gempec:generate를 방금 실행했기 때문입니다.어떤 것이 문자열을 전달해야 할 때, 버전 번호로 nil을 전달하고 있습니다.gemspec토론 #셋
Jeweler:gemspec::parse 방법에 puts #{data}
를 추가했습니다. 출력된 버전 번호는nil을 포함합니다.보이다http://gist.github.com/407271토론 #4
나도 이 점을 보았는데 이 문제가 여전히 존재한다는 것을 확인할 수 있다.토론 #5
이것은 보석상 1.4.0이 나에게 가져다 준 것이다.다음은 제가 하고 있는 일입니다.$rake 버전:bump:minor
$rake gempec:생성
$rakegemspec:validate
토론 #6
rakegemspec:validate를 실행할 때마다 저도 이런 상황을 겪습니다.보기:http://github.com/h3rald/glyph/issues#issue/151
토론 #7
나도 이 문제에 직면해 있다. 버전에 의존할 때 발생한다.yml.나는 그 파일을 삭제했다내 RakeFile에서 버전을 설정하기만 하면 됩니다.
보석.version=“1.0.1”
다시 생성하고 부릉부릉 소리를 내면gemspec가 정상적으로 검증합니다
technicalpickles, 이 문제를 다시 만들려면 Rakefile에서 버전을 지정하지 않았는지 확인한 다음 다음과 같이 하십시오.
rake version:write
rake gemspec:generate
rake gemspec:validate --trace
알아줬으면 좋겠어.현재, 수동 설정 버전 토론 #8
@activestylus: 해결 방안이 유효합니다.나는 이 문제를 실증할 수 있다.
토론 #9
나도 물어토론 #10
똑같은 질문.Rakefile에 버전을 추가하는 것은 검증을 통과했지만 발표가 작동하지 않습니다.이 문제는 이미 해결되었다.어쩌면 이게 왜 7개월 동안 아무 일도 없었을까?
토론 #11
이 문제가 남아 있는 누구에게도 환매 협의를 사용하라고 말씀해 주시겠어요?나는 그것을 복제하기가 매우 어려워서 복구하기가 좀 까다롭다.또한 1.5.1로 업데이트를 시도해 보십시오. 도움이 되는지 확인하십시오.
토론 #12
낙담하고 밑바닥 파이프라인을 배우려는 바람에 저는gem규범을 직접 사용했습니다.그러나, 나는 당신들에게 내가 보석상을 사용하는 마지막 약속을 지적할 수 있습니다.https://github.com/ammar/regexp_parser/tree/e365450e10df2975685375b330bb4201b523818e
Jeweler를 고려하기 전에, 나는 이미 이 프로젝트의 일을 시작했기 때문에, 나는 자신의 Rakefile을 가지고 있다.부족한 버전을 제외하고gem 스펙을 직접 사용한 후에 저도 루비포지 프로젝트가 부족하다는 것을 알게 되었습니다.
나는 자동으로 제출하고 표시하는 것을 정말 좋아하며, 곧 보석상들을 같은 항목으로 다시 방문할 계획이다.
고맙습니다.
토론 #13
FWIW에서 나는'0.0.0'버전의 문제나 최소한'예매'gems(예를 들어'0.0.0.0.snapshot')의 문제를 알아차렸다. 그래서 나는'0.0.1.snapshot'으로 전환했다. 나는 이것이 그것을 사라지게 했다고 생각한다.토론 #14
1.5.1은 이 문제를 해결하지 못했다.실제로, 모든 미리 발표된 접두사는 이 문제를 초래할 수 있습니다.토론 #15
@technicalpickles는 Jeweller 1.5.1을 사용합니다. 빈 gm을 만들고 이 버그가 여전히 존재하는지 확인합니다.마음대로 보세요.https://github.com/nickhoffman/jeweler-issue-81 .gemspec를 확인하려고 하면 다음과 같은 상황이 발생합니다.
#rake gempec: 검증 - 추적
(in/Users/nick.hoffman/src/jeweler-issue-81)
*gempec:validate 호출(처음)
*gempec 호출 필요(처음)
*필요한 경우 gempec 실행
*gempec:validate 실행
보석상 81기.gempec가 잘못되었습니다.더 많은 상세한 정보는 거슬러 올라가는 것을 참고하시오.
라크 유산했어!
클래스에 정의되지 않은 방법
prerelease?' for nil:NilClass
/Users/nick.hoffman/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/specification.rb:1377:in
블록:규범'보석상 81기.gemspec:9:in
block (2 levels) in parse'
/Users/nick.hoffman/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/specification.rb:425:in
초기화'보석상 81기.gemspec: 7:in
new'
jeweler-issue-81.gemspec:7:in
블록 해석'/사용자/닉.호프만rvm/gems/ruby-1.9.2-p0/gems/jeweler-1.5.1/lib/jeweler/gemspec_helper.rb:53:in
eval'
/Users/nick.hoffman/.rvm/gems/ruby-1.9.2-p0/gems/jeweler-1.5.1/lib/jeweler/gemspec_helper.rb:53:in
블록의 해석#
토론 #16
보석상 도 더 젬의 사용자에게는 복구가 간단하다.위에서 언급한 판본.너의 써레에 이거를...
버전 = 파일.존재합니까?('버전')?서류읽기(버전): "
...
보석.version=version
토론 #17
은 Jeweller 1.5.2와 rubygems 1.7.2에서 여전히 이 문제가 존재한다.이것을 내 Rakefile에 추가하여 수정하려면 다음과 같이 하십시오.gem.version = File.read('VERSION').chomp
토론 #18
still have this problem with jeweler 1.5.2 and rubygems 1.7.2. Fixed it by adding this to my Rakefile:
gem.version = File.read('VERSION').chomp
내 임무가 사라졌어.
version:bump
와 @behrangsa, Jeweler 1.5.2(방금 1.6.3에서 테스트)의 행동은 같다.이것은 최근에야 시작된 것이지, 항상 문제가 되는 것은 아니다.공교롭다https://github.com/rgarner/semantically-taggable
토론 #19
이것은 매우 은밀해 보여서 나는 줄곧 복제할 수 없었다.만약 누군가가 전화를 걸어 들어온다면, 당신은 아래의 정보를 제공할 수 있습니까?- 이 점을 보여주는 저장소
-ruby--버전
- 보석판
- 보석상
-bundle show (물론 bundler를 사용한다면)
@behrangsa 고의 설정
토론 #20
으로 버전 작업이 사라집니다.일반적으로, 당신이 그것을 사용할 때, 당신은 그것을 일정하게 유지할 수 있기 때문에, 만약 당신이 그것을 이렇게 설정한다면, 그것은 반드시 그것을 어떻게 부딪치는지 모른다.@rgarner는 당신의 리포로 복사할 수 없습니다: (루비 1.9.2와 루비 게이지의 일부 변체로 테스트를 진행했습니다.
하지만 좋은 소식도 있다.나는 공백 환매 협의에서 복제할 수 있다.나는 최근에 루비게이지를 1.8.5로 업그레이드했다.나는 이것이 1.3.7에서 1.8.5 사이로 시작된 것이라고 의심한다.
gem.version
코드에서 이런 상황이 발생한 곳을 찾을 수 있지만...이유는 많지 않습니다. (디스크의gemspec가 메모리에 읽혀서 정상 상태로 해석될 때 right here, 그것이 나타납니다.어떤 이유로든 디스크의gempec에서 버전을 설정할 때 버전은nil입니다. 이것이 바로
토론 #21
미리 발표된 곳입니다.nil:NilClassundefined method
s.version`은gempec에 없습니다.또 다른 믿기지 않는 점은 네가 이렇게 할 때
comes in. You can clearly see
먼저 쓰기 조작을 한 다음에 검증을 하고 효과가 좋다는 것이다.직접 실행rake gemspec
하면 실패합니다.나는 @ahamid의 예비 발행판에 대한 건의를 보았지만, 0.0.0과 예비 발행판의 조합이 어떻든지 간에, 그것은 모두 발생하고 있는 것 같다
총괄적으로 말하면 나는 현재의 검증을 포기하는 방식을 고려하고 있다.그러나 우선, 하나의 역사적 교훈은
GitHub이 rubygems를 위탁 관리할 때 가장 큰 통증 중 하나는 무효한 GemSpec으로 인해 Gem이 구축할 수 없게 된 것이다. 의외로 이런 상황이 발생한 흥미로운 방법들이 많다.쥬얼러의 최초 목표 중 하나는 이 문제를 더욱 쉽게 처리할 수 있도록 하는 것이다. 그래서 쥬얼러는 GitHub과 같은 평가를 했고 매우 좋았다.
오늘로 접어들면서 GitHub는 더 이상 루비gems를 위탁하지 않는다. 루비gems에 대해서 말하자면.org, 너는 결국 스스로 그것을 만들 것이다.구축할 때 문제가 발생하면 다음과 같이 표시됩니다.
이 모든 것을 감안하면, 이 특정한 검증을 삭제하는 것은 좋은 생각인 것 같다.나는 다음 보석상 해커 회의에 참석할 때 그것을 발표하고 1.7판으로 발표할 것이다.x,
rake gemspec:validate
안녕, 조시,나는 네가 루비게이지에 대한 평가가 옳다고 생각한다. 네가 이 점을 언급했으니, 내가 1.3.7에서 1.8.5로 업그레이드했을 때 (이것은 1.9.2-p0으로 테스트한 것이다.)제 사과를 받아 주십시오. 제가 환매 협의에 연결했을 때, 저는 이미
토론 #22
해결 방안을 검사했습니다.gem.version = File.read('VERSION').chomp
공백 환매와 같은 행위를 보아야 한다.git reset b1455d9ce808f55568243197e8a0596c490191ef
나는 가넬의 관점에 동의하지 않는다.Rubygems 1.8.11을 사용하고 있는데 이 문제에 부딪혔습니다.토론 #23
저도 같은 문제가 있습니다.rubygem 1.8.25
weler 1.8.4
토론 #24
나는 이미 이 라인과 원본 코드를 검사한 후에 뭔가를 발견할 수 있다.주요 문제는
토론 #25
와gemspec
사이의 차이다.gemspec:validate
gemspec 조수에 대한 정보에 달려 있습니다.gemspec:validate
gemspec:generate
에 버전 문자열을 설정하고 gemspec:generate
이 변수를 사용합니다.이것은 다른 행위의 원인인 것 같다.또 다른 작은 문제는
gemspec_helper.spec.version
명령이 gemspec:validate
기본 Rakefile에 삽입되지 않았다는 것이다.나는 모든 문제를 해결하면 이 문제를 해결할 수 있다고 생각하지만, 나는 시간이 있을 때 이 두 문제를 해결하려고 시도할 것이다.
jeweler
같은 질문입니다.보석상 2.0.1.
Reference
이 문제에 관하여("rake gempec:validate"가 항상 실패), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/technicalpickles/jeweler/issues/81텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)