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


111

У мене виникає наступна помилка, коли я намагаюся використовувати дорогоцінні камені у Windows, і я також посилався на цю публікацію stackoverflow та оновлені рубігми та рейки. Але нічого не могло вирішити проблему.

Далі йде повна помилка,

    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:
  - ВЕРСІЯ РУБІГЕМ: 1.7.2
  - РІЗНА ВЕРСІЯ: 1.8.7 (2011-06-30 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
  - ПЛАТФОРМИ РУБІГЕМ:
    - рубін
    - x86-mingw32
  - GEM PATHS:
     - 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
Це не спрацювало і для мене - тому що команда "оновлення дорогоцінних каменів - система" викликала таку саму проблему, і "незайманий камінь" нічого не зробив. Мені довелося дотримуватися рішення @ Romain_Tribes та видалити файли gemspec вручну перед повторним запуском оновлення дорогоцінних каменів
Taryn East

4
Це не дуже вдалий варіант для ubuntu, особливо для випадкових користувачів рубіну.
Філіп Уілан

2
Відповідь GaborKomaromi нижче (або одна із знахідок .. у коментарях) працює. Цей ні.
gotofritz

132

Кінцеве рішення таке:

Шукайте файли "spec" у вашому каталозі Ruby: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ специфікації *

Якщо файл gemspec містить щось подібне: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Потім видаліть частину 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Після збереження цих файлів gemspec проблема вирішується.


2
Це працювало для мене (рубін 1,8,7 / win7), інших рішень не було
Фелікс Алкала

3
Працював як шарм на ubuntu з рубіном 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 -тип 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

Жодне з цих рішень не працювало на мене. Щоб виправити це, я видалив увесь вміст згаданого каталогу (деякий / шлях / до / специфікації /), після чого встановив потрібні мені дорогоцінні камені (власне, Bundler потім встановити пакет).


Це просто, швидко та ефективно. Спробуйте це перед будь-яким з інших.
Тім Сколлік

1
Єдине рішення, яке працювало і для мене. Але не впевнений, чи це правильне виправлення.
Сурен

Це працювало для мене. Саме ця система Gem udpate - система, яка привернула мене до цієї проблеми!
Дейв Ісаак

12

На додаток до запущеного gem update --systemя використовував gem install <gem with bad gemspec>на кожному з елементів gem env, як повідомив, як поганий. Це очистило помилки на моїй машині.


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


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 --systemвиникла таке попередження:

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) в редакторі вибору ур ... (geditronic-0.6.4.gemspec)
крок 3. змінити дату =% 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 та запустити його один раз. Після слова все спрацювало.


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щоб видалити всі дорогоцінні камені з неправильною gemspec. Виконати, bundle installщоб перевстановити всі дорогоцінні камені та Віолу!


Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
Джонатан

1
rvm gemset empty your_gemset_name_or_global
taiansu


1

Вирішується запуском gem update --systemтоді gem update.


працював для мене, я щойно отримав цю помилку після того, як робив оновлення дорогоцінних каменів --систему, більшість з них пішла після оновлення дорогоцінних каменів. для інших я видалив файл gemspec.
mrbrdo

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

"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 = 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, і він просто схожий на формат дати, який знаходиться у файлах, які показують помилки, не відповідає цьому.

Що я зробив, це просто вручну виправити ті образотворчі gemspecs, як було запропоновано вище (змінити дати на "yyyy-mm-dd", це працює для мене.

У всіх специфікацій рубігем, які у мене були, у цієї проблеми також є лінія

s.rubygems_version =% q {1.3.5}

Тож я здогадуюсь, що це просто старі дорогоцінні камені? І що з тими% q {...} все одно?


0

Якщо у вас була помилка на Ubuntu 11.04, моїм рішенням були такі командні рядки:

$ sudo apt-get install ruby1.9.1

Після цього ви не отримаєте помилку дати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.