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

Когда я включаю драгоценный камень, который я сделал, благодаря Bundler (версия 1.0.12), в Gemfile, а затем я пытаюсь связать или грабли именно так:

$ rake

У меня есть это сообщение об ошибке:

Invalid gemspec in [/Users/zagzag/.rvm/gems/[email protected]/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/[email protected]/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

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

Ответ 1

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

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}

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

Ответ 2

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

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} и должен исправить вашу проблему.

Ответ 3

Обратите внимание на комментарий Дамиана Новака. Эти команды могут испортить ваши рубигемы!

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

sudo gem install rubygems-update
sudo update_rubygems     

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

sudo gem update --system

Ответ 4

Вы можете обновить свой gem. Чтобы исправить это, вы можете напрямую отредактировать файл gemspec - от

2011-04-21 00:00:00.000000000Z

к

YYYY-MM-DD

Или обновите свои рельсы.

sudo gem update rails

Он исправит проблему.

Ответ 5

Не указывайте время... просто дату. 2011-04-21 должен работать нормально.

Ответ 6

Была та же проблема. Это похоже на ошибку в рубигемах. Здесь зафиксирована фиксация: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

Вам необходимо обновить rubygems и bundler до последних версий. Если после этого у вас по-прежнему возникают проблемы, вам может потребоваться удалить и затем переустановить любые драгоценные камни, которые могут вызвать проблемы.

Ответ 7

Это скорее комментарий к ответу ben hall, но у меня нет этой привилегии, но кажется, что

Обновление 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

И на свои риски! Я все еще новичок, но он работал у меня;)

Ответ 8

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

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

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

Ответ 9

Подход с дробовиком: Удалите все драгоценные камни и повторный набор.

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

Ответ 10

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

Ответ 11

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

Недопустимый gemspec в [/var/lib/gems/1.8/specifications/svn2git-2.1.2.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.

Ответ 12

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

gem update --system

Ответ 13

Это моя среда:

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/[email protected]
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/[email protected]/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/[email protected]
   - /Users/user/.rvm/gems/[email protected]
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

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

Ответ 14

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

Ответ 15

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

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

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

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

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