[rubygems] 사양의 날짜 형식으로 인해 잘못된 gemspec

Bundler (버전 1.0.12) 덕분에 내가 만든 gem을 Gemfile에 포함시킨 다음 번들링하거나 다음과 같이 레이크를 시도합니다.

$ rake

이 오류 메시지가 있습니다.

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

저는 마지막 Mac OS X (10.6.4)를 사용하고 있습니다.

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

과:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

이 문제를 해결하는 방법을 모르겠습니다. 모든 아이디어에 감사드립니다.



답변

“사양에 잘못된 날짜 형식”오류를 수정하는 방법은 다음과 같습니다.

1.) 다음 위치에있는 사양 폴더로 이동합니다.

/usr/local/lib/ruby/gems/1.8/specifications/

2.) 문제를 일으키는 사양을 찾으십시오.

3.) 변경 s.date = %q{2011-05-21 00:00:00.000000000Z}s.date = %q{2011-05-21}

그것은 나를위한 승리입니다! 행운을 빕니다


답변

모든 gem에 대해이 문제를 해결하는 명령은 다음과 같습니다.

perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec

문제 로 변환 s.date = %q{2011-05-21 00:00:00.000000000Z}되고 s.date = %q{2011-05-21}수정되어야합니다.


답변

Damian Nowak의 의견을 주목하십시오. 이 명령은 루비 젬을 엉망으로 만들 수 있습니다!

Ubuntu 11.10에서는 다음이이 오류를 해결했습니다.

sudo gem install rubygems-update
sudo update_rubygems

다음은 일부 시스템에서는 작동하지만 Debian 기반에서는 작동하지 않을 수 있습니다.

sudo gem update --system


답변

당신은 당신을 업그레이드 할 수 있습니다 gem. 이 문제를 해결하려면 gemspec파일을 직접 편집 할 수 있습니다.

2011-04-21 00:00:00.000000000Z

…에

YYYY-MM-DD

또는 레일도 업그레이드

sudo gem update rails

문제가 해결됩니다.


답변

시간을 지정하지 말고 날짜 만 지정하십시오. 2011-04-21잘 작동합니다.


답변

같은 문제가있었습니다. rubygems의 버그처럼 보입니다. 수정 한 커밋은 다음과 같습니다. https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

rubygems 및 bundler를 최신 버전으로 업데이트해야합니다. 그 후에도 문제가 계속되면 문제를 일으키는 모든 gem을 제거한 다음 다시 설치해야 할 수 있습니다.


답변

이것은 벤 홀의 답변에 대한 의견에 가깝지만 아직 그 특권이 없습니다.

gem 업데이트가 작동하지 않는 것 같았습니다. 잘못된 날짜 형식으로 인해 gem을로드 할 수도 없다고 생각했습니다. 날짜를 수동으로 변경하는 것은 너무 답답해서 하나씩 갈 수 없었으므로 grep :

grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}

그리고 sed :

sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec

그리고 당신 자신의 위험에 !! 나는 여전히 sed 초보자이지만 나를 위해 일했습니다.)