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

111

Когда я пытаюсь использовать драгоценные камни в Windows, я получаю следующую ошибку, и я также ссылался на этот пост stackoverflow и обновленные rubygems и rails. Но ничто не могло решить проблему.

Ниже приводится полная ошибка,

    D: \> gem env
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: недопустимый формат даты в спецификации: "2011-08-25 00:00:00
.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: недопустимый формат даты в спецификации: «2011-08-03 00:00:
00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: недопустимый формат даты в спецификации: «2011-08-26 00:00:
00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: недопустимый формат даты в спецификации: «2011-09-01 00: 00: 0
0,000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: недопустимый формат даты в спецификации: «2011-09.
-01 00: 00: 00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: недопустимый формат даты в спецификации: «2011-08-27 00
: 00: 00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: недопустимый формат даты в спецификации: "2011-08-25 00:00:00
.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: недопустимый формат даты в спецификации: «2011-08-03 00:00:
00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: недопустимый формат даты в спецификации: «2011-08-26 00:00:
00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: недопустимый формат даты в спецификации: «2011-09-01 00: 00: 0
0,000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: недопустимый формат даты в спецификации: «2011-09.
-01 00: 00: 00.000000000Z "
Недопустимый gemspec в [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: недопустимый формат даты в спецификации: «2011-08-27 00
: 00: 00.000000000Z "
Среда RubyGems:
  - ВЕРСИЯ RUBYGEMS: 1.7.2
  - ВЕРСИЯ РУБИНА: 1.8.7 (30.06.2011, patchlevel 352) [i386-mingw32]
  - КАТАЛОГ УСТАНОВКИ: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - ИСПОЛНИТЕЛЬНЫЙ РУБИН: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - ИСПОЛНИТЕЛЬНЫЙ КАТАЛОГ: D: /RailsInstaller/Ruby1.8.7/bin
  - ПЛАТФОРМЫ RUBYGEMS:
    - Рубин
    - x86-mingw32
  - ДРАГОЦЕННЫЕ ПУТИ:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Документы и настройки / jeygokul / .gem / ruby ​​/ 1.8
  - КОНФИГУРАЦИЯ GEM:
     -: update_sources => true
     -: verbose => true
     -: benchmark => false
     -: backtrace => false
     -: bulk_threshold => 1000
  - УДАЛЕННЫЕ ИСТОЧНИКИ:
     - http://rubygems.org/
Абхишек
источник

Ответы:

45

Я исправил эту проблему, обновив RubyGems до 1.8.10 с

gem update --system

Изменить: вы также можете попробовать (как предлагает ZeissS)

gem install rubygems-update
update_rubygems
Майкл
источник
16
У меня 1.8.10, но я до сих пор получаю это
DGM
3
Попробуйте выполнить команду «gem pristine [gemname]» для драгоценных камней, вызывающих эти предупреждения.
Майкл
2
У меня это тоже не сработало - потому что команда «gem update --system» вызвала ту же проблему, а «gem pristine» ничего не сделала. Мне пришлось последовать решению @Romain_Tribes и вручную удалить файлы gemspec перед повторным запуском обновления драгоценного камня
Taryn East
4
Это не очень хороший вариант для ubuntu, особенно для случайных пользователей Ruby.
Филлип Уилан
2
Ответ ГаборКомароми ниже (или одна из находок .. в комментариях) работает. Это не так.
gotofritz 02
132

Окончательное решение таково:

Найдите файлы "spec" в каталоге Ruby: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ specs *

Если файл gemspec содержит что-то вроде этого: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Затем удалите часть 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

После сохранения этих файлов gemspec проблема решена.

ГаборКомароми
источник
2
У меня это сработало (ruby 1.8.7 / win7), другие решения
Феликс Алкала
3
Работал отлично на ubuntu с ruby ​​1.8.7, gem 1.7.2. Спасибо!
Дэн
9
Это приведет к удалению строки из файла спецификации: «find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'»
Rainer Blessing
17
найти /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' в Ubuntu
kubek2k
4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Педро Роло
46

Ни одно из этих решений не помогло мне. Чтобы исправить это, я удалил все содержимое указанного каталога (some / path / to / спецификация /), затем установил нужные мне драгоценные камни (на самом деле Bundler затем установил пакет).

Ромен Племена
источник
Это просто, быстро и эффективно. Попробуйте это перед любым другим.
Тим Сколлик
1
Единственное решение, которое сработало и для меня. Но не уверен, что это правильное решение.
Suren
Это сработало для меня. У меня была запущенная gem udpate - система, которая помогала мне решить эту проблему!
Dave Isaacs
12

В дополнение к запуску gem update --systemя использовал gem install <gem with bad gemspec>для каждого элемента gem env, отмеченного как плохой. Это устранило ошибки на моей машине.

TheArtTrooper
источник
5
Вы можете переустановить с помощью «gem pristine [gemname]» или выполнить «gem pristine --all», чтобы переустановить драгоценные камни из кеша без их повторной загрузки.
Майкл
10

Как сказал Майкл в комментарии:

gem pristine --all
wingfire
источник
6

Была такая же проблема при попытке установить GEM на Ubuntu 11.10.

Invalid gemspec in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: invalid date format in specification: "2011-12-28 00:00:00.000000000Z"

Вышеуказанные варианты мне не подошли. gem envсообщил следующее:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]

Итак, я предположил, что эта проблема возникла из-за того, что мне требовалось установить более новую версию RubyGems.

Выдача gem update --systemyeilded следующее предупреждение:

ERROR:  gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories.
If you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian.

Однако я наконец смог обновить rubygemsдо 1.8.15, выполнив:

sudo gem install rubygems-update && update_rubygems

После этого все заработало, удачи! :)

Джонни Ривз
источник
Для меня на Ubuntu потребовалось, чтобы sudo apt-get purge rubygemsзатем sudo apt-get install rubygemsснова установить все драгоценные камни. Неудобно, но, по крайней мере, это сработало: P (вышеупомянутое не сработало для меня)
Джефф Тратнер
3

Недействительный gemspec в [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: недопустимый формат даты в спецификации: "2011-09-09 00: 00: 00.000000000Z"

Простое решение такой проблемы - перейти к файлу .. например.

Шаг 1. cd /var/lib/gems/1.8/specifications
шаг 2. откройте файл (хронический-0.6.4.gemspec) в редакторе по вашему выбору ... (gedit chronic-0.6.4.gemspec)
шаг 3. измените s.date =% q {2011-10-13 00: 00: 00.000000000Z} на s.date =% q {2011-10-13}

Ура :)

Зависимый
источник
2

У меня была такая же проблема на моем ubuntu после обновления до 10.10. У меня ничего из вышеперечисленного не сработало. Мне пришлось установить скрипт update_rubygems с http://rubygems.org/pages/download и запустить его один раз. Послесловие все сработало.

ZeissS
источник
2

Я исправил эту проблему «недопустимая спецификация форматирования даты», изменив соответствующую строку в D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec, поместив s.date = Time.now вместо s.date = "2011-08-25 00: 00: 00.000000000Z" То же самое можно использовать и с другими файлами.

Санитха
источник
2

У меня слишком много драгоценных камней, чтобы исправить один за другим, я пробую оба, update_rubygemsно gem pristine --allвсе равно безуспешно.

Поэтому я использую rvm clear gemsetдля удаления всех драгоценных камней с неправильной спецификацией. Выполните bundle installпереустановку всех драгоценных камней, и Виола!

Taiansu
источник
Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
Джонатан
1
rvm gemset empty your_gemset_name_or_global
taiansu
2
cd vendor/bundle/ruby/1.9.x/specifications
sed -i 's/ 00\:00\:00.000000000Z//g' *
Anno2001
источник
1

Решено бегом gem update --systemтогда gem update.

Дэвид Уолш
источник
работал у меня, я только что получил эту ошибку после выполнения обновления gem --system, большинство из них исчезли после обновления gem. для других я удалил файл gemspec.
mrbrdo 05
1

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

gem install tilt   -v 1.3.3
gem install execjs -v 1.2.4
gem install temple -v 0.3.3
gem install guard  -v 0.6.3
gem install guard-livereload -v 0.3.1
gem install rack-cache -v 1.0.3

Я думаю, что это gem pristine xxx yyy zzzили gem pristine --allможет не выходить всегда (когда-либо?) В репозитории драгоценных камней, тогда как это gem install xxx -v v.r.mпроисходит.

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

Крис Маркл
источник
1

rvm gemset clearа потом bundle installработал у меня!

Вибхути
источник
1

«gem install rubygems-update», «update_rubygems», затем «gem pristine --all» - это комбинация, которая решила для меня проблему после того, как ни одна из перечисленных ранее не сработала.

Брайан Кноблаух
источник
0

В моем случае упомянутые версии гемов даже не были установлены. У меня были эти драгоценные камни, но не версии, характеристики которых вызывали ошибку. Итак, я просто удалил каждый из файлов /path/to/specifications/offending-XYZZ.gemspec.

Джон Гарвин
источник
0

На самом деле это не ответ, но если кому-то захочется копать больше, я нашел эту спецификацию gemspec здесь: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (прокрутите вниз до date = date () и нажмите показать источник):

@date = case date
when String then
  if %r\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then
    Time.utc($1.to_i, $2.to_i, $3.to_i)
  else
    raise(Gem::InvalidSpecificationException,
          "invalid date format in specification: #{date.inspect}")
  end
when Time, Date then
  Time.utc(date.year, date.month, date.day)
else
  TODAY
end

Я предполагаю, что это код, который анализирует этот gemspec, и похоже, что формат даты в файлах, которые показывают ошибки, не соответствует этому.

Я просто вручную исправил эти оскорбительные характеристики драгоценных камней, как было предложено выше (изменив даты на «гггг-мм-дд», у меня это сработает.

Во всех спецификациях rubygem, которые у меня были с этой проблемой, также есть строка

s.rubygems_version =% q {1.3.5}

Полагаю, это просто старые драгоценности? И что вообще с этими% q {...}?

ПапаФрейд
источник
0

Если у вас была эта ошибка в Ubuntu 11.04, моим решением были следующие командные строки:

$ sudo apt-get install ruby1.9.1

После этого вы не получите ошибку даты.

mazyZed
источник