仕様の日付形式のため、gemspecは無効です


89

Bundler(バージョン1.0.12)のおかげで作成したgemをGemfileに含めた後、そのようにバンドルまたはrakeしようとします。

$ 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

この問題の解決方法は本当にわかりません。任意のアイデアをありがとう。


私は常にこれらのエラーを常に受け​​ています!!! どのように修正しましたか?これまでの2つの回答は
役に立た

誰もが提案したのは、読み取り専用ファイルです。どうすれば変更できますか?
チャンティアル

回答:


143

これは、「仕様に無効な日付形式」エラーを修正する方法です。

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}

それは私にとって勝利です!幸運を


御馳走を働いた、これは私の頭をしていました!
デビッドアーチャー

私のために働いた!Ruby 1.8がインストールされたWindows XPを使用していました。'livereload'(livereload.com)を使用しようとすると、em.websocket-0.3.2.gemspecがこのエラーをスローしていました。
program247365

慢性的な1.6.4のLinuxで私のためにも働いた
Gepsens

1つのgemの問題は修正されますが、インストールされているgemをフォローすると、このエラーが再び発生する可能性があります。
MickaelFM 2010年

2
これは私を怒らせています...私は50個のサードパーティの宝石の宝石仕様を変更することになっていますか?なぜ...彼らは年が経過し、gemspecsを更新していない
OMA

60

すべての宝石に対してこれを修正するコマンドは次のとおりです。

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}、問題が修正されます。


これを行う前に迅速なバックアップを作成するための素晴らしいトリック:git init . && git commit -am "backup
troyt

日付の形式を変更しようとする理由は、変更する権限がないことです。何をすべきか?
チャンティアル

@chhantyal sudoとして実行する必要があります。本当にありがとうございました!時間を大幅に節約できました。
Matt McClure

21

Damian Nowakからのコメントに注意してください。これらのコマンドは、おそらくルビジェムを台無しにするでしょう!

Ubuntu 11.10では、次のようにしてこのエラーを解決しました。

sudo gem install rubygems-update
sudo update_rubygems     

以下は、一部のシステムでは機能するが、Debianベースでは機能しない場合があります。

sudo gem update --system

すばらしい、oneiricの最終バージョンでも動作します。しかし、これは手動でインストールされたすべての宝石を一掃するようです。
zehrer、2011年

1
使用しないでください。それは私のルビジェムを台無しにしました。たくさんのrm -rfを実行し、リポジトリから元のrubygemに戻す必要がありました。rubygemsを完全に手動でインストールするか、Ubuntuから提供されているrubygemsを使用します。または、PPAで現在のルビジェムを探すこともできます。(1か月前に作成された+1を元に
戻せる

1
@DamianNowakこれを聞いて申し訳ありません。回答に警告を追加しました!
マーク

14

をアップグレードできますgem。これを修正するには、gemspecファイルを直接編集できます-から

2011-04-21 00:00:00.000000000Z

YYYY-MM-DD

または、レールもアップグレードします

sudo gem update rails

問題は修正されます。


@Meltemiそれはspecificationsディレクトリの下にありますこれは私のspecificationsディレクトリパスです/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

レールを更新するための+1-問題は修正されますが、最初に同じ警告がスローされ、正しくインストールされ、問題は発生しなくなります。
アダムデービス

6

時間は指定せず、日付のみを指定します。2011-04-21正常に動作するはずです。


Gem :: Specification.new do | s | s.name = "myplugin" s.version = "1.0.0" s.platform = Gem :: Platform :: RUBY s.authors = ["..."] s.email = ["..."] s .homepage = "http:// ..." s.summary =%q {...} s.description =%q {...} s.rubyforge_project = "myplugin" s.files = git ls-files.split( "\ n ")s.test_files = git ls-files -- {test,spec,features}/*.split(" \ n ")s.require_paths = [" lib "] end
Zag zag ..

ご回答有難うございます。同意しますが、myplugin.gemspecファイルで日付や日時を使用していません。宝石はバンドラーによって自動生成されました。この問題はバンドラーまたはRVMが原因である可能性があると思います...それは奇妙です。
ザグザグ..

4

同じ問題があった。rubygemsのバグのようです。これを修正したコミットは次のとおりです。。https //github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

rubygemsとbundlerを最新バージョンに更新する必要があります。それでも問題が解決しない場合は、問題の原因となっている宝石をすべて削除してから再インストールする必要があります。


まあ、Redmineが独自の2.3.11バージョンのRailsを使用することを除いて、Rails 2.3.11はRubyGems> = 1.7.0で失敗し、あなたが言及するコミットは2011年5月19日、つまり1.7.0以降(4月1日、 2011)。その場合は、スペックファイルを編集する必要があると思います。
Olivier 'Ölbaum' Scherler 2011

3

これはベンホールの答えに対するコメントの詳細ですが、私はまだその特権を持っていません

宝石の更新はうまくいかなかったようで、日付フォーマットが悪いために宝石をロードすることさえできないと思います。手動で日付を変更すると、1つずつ進むのが面倒なので、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の初心者ですが、うまくいきました;)


2

私のスライスホストサーバーでは、仕様フォルダーが別の場所にありました。ここにパスがあります:

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

提供されたエラーは、仕様フォルダへのパスを提供する必要があります。


2

ショットガンアプローチ:すべてのGemをアンインストールして、Bundlerを再実行します。

  1. gem list --no-version | xargs gem uninstall -aIx
  2. rm -i `rvm gemdir`/specifications/*.gemspec
  3. gem update --system
  4. gem install bundler
  5. bundle install

.rvmrcファイルを使用する場合は、gemdirが余分な出力を生成する可能性があるため、2行目の実行には注意してください。
Jared Beck

1

(バグ修正がRubygemsの安定版リリースに入るまで)gemコマンドの--versionスイッチを使用して、警告を生成するgemの同じバージョンを再インストールすることで解決しました。


1

ベンホールが言ったように、システムごとに変わる可能性のあるgemspecファイルを修正する必要があります。エラーレポートでどのファイルがどのファイルであるかを確認するには、たとえば次のようにします。

[/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]の無効なgemspec:仕様の日付形式が無効です: "2011-12-28 00:00:00.000000000Z"

この例では、「/ var / lib / gems / 1.8 / specifications / svn2git-2.1.2.gemspec」ファイルを編集し、「2011-12-28 00:00:00.000000000Z」を「2011-12-28」に変更する必要がありますs.dateオプション内。


1

今もこの問題がありました。Rubygemsを更新すると問題は解決しました:

gem update --system

0

これは私の環境です:

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
- INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

私はようやく原因/システムでこれらのエラーを防ぐ方法を見つけることができました。cucumberとcucumber-railsバージョン1.0.2に戻します。最新バージョンを使用してこれを行っていました...


0

有効な日付形式の最新バージョンのgemをインストールした場合でも、は古いライブラリの仕様についてまだ文句を言うgem cleanup GEMNAMEので、後で確認してgemください。


0

gemを再インストールすることは、これらのわずかに異なるマシン状態の多くで解決策になる可能性があります。

私の場合:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

私の場合、他のより創造的なソリューションは失敗しました。

Invalid gemspecココアポッドを使用しようとすると、問題が発生しました。私はgem install cocoapodsもう一度走りました、そして、すべてはバラ色でした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.