Недействительным gemspec из-за формата даты в спецификации


когда я включаю драгоценный камень, который я сделал, благодаря Bundler (версия 1.0.12), в 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

Я действительно не вижу, как решить этот вопрос. Спасибо за любые идеи.

15 89

15 ответов:

вот как я исправляю ошибку "недопустимый формат даты в спецификации":

1.) Перейдите в папку спецификации, расположенную по адресу:

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

2.) Найдите спецификацию, которая вызывает проблему.

3.) Изменить s.date = %q{2011-05-21 00:00:00.000000000Z} to s.date = %q{2011-05-21}

Это победа для меня! Удачи

вот это команда, чтобы исправить это для всех ваших перлов:

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

преобразование s.date = %q{2011-05-21 00:00:00.000000000Z} to s.date = %q{2011-05-21} и должны исправить вашу проблему.

Пожалуйста, обратите внимание на комментарий Демьян Новак. Эти команды не может испортить ваш библиотек RubyGems!

на Ubuntu 11.10 следующая решена эта ошибка:

sudo gem install rubygems-update
sudo update_rubygems     

следующее может работать на некоторых системах, но не на основе Debian:

sudo gem update --system

вы можете обновить свой gem. Чтобы исправить это, вы можете изменить напрямую - от

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 из-за плохого формата даты. ручное изменение дат было слишком разочаровывающим, чтобы идти один за другим, поэтому grep:

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

и для sed:

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

и на свой страх и риск!! Я все еще новичок sed, но это сработало для меня;)

на моем сервере slicehost папка спецификаций была расположена в другом месте. Вот путь:

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

предоставленная ошибка должна дать путь к папке спецификаций.

подходом ружья: удалите все драгоценные камни и повторно запустите 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

(до тех пор, пока исправление ошибок не попадет в стабильный выпуск Rubygems) я решил его, переустановив ту же версию любых предупреждающих камней, используя переключатель --version команды gem.

Как сказал Бен Холл, вы должны исправить файл gemspec, который может измениться для системы в систему. Чтобы узнать, что такое файл смотрите, что файл говорит в отчете об ошибке, например:

недействительным в gemspec [/var/lib/gems/1.8/specifications / svn2git-2.1.2.gemspec]: дата недействительным формат в спецификации: "2011-12-28 00:00:00.000000000 з"

в этом примере вы должны отредактировать "/var/lib/gems/1.8/specifications / svn2git-2.1.2.gemspec "file and change" 2011-12-28 00:00:00.000000000 Z" для "2011-12-28" в с. дата.

была эта проблема еще сейчас. Обновление Rubygems решило это прекрасно:

gem update --system

Это мое окружение:

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/

мне, наконец, удалось найти причину / способ предотвратить эти ошибки в моей системе. Я просто возвращаюсь к огурцу и огурец-рельсы версии 1.0.2. Использование последних версий делало это...

даже если вы устанавливаете последнюю версию драгоценного камня с допустимым форматом даты, убедитесь, что gem cleanup GEMNAME затем с gem по-прежнему будет жаловаться на спецификации для старых библиотек.

переустановка ваших драгоценных камней может быть решением во многих из этих немного разных состояний машины.

В моем случае:

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

В моем случае, другие, более креативные решения не удалось.

моя проблема была получить Invalid gemspec при попытке использовать cocoapods. Я побежал gem install cocoapods снова и все было безоблачно.