Nieprawidłowa specyfikacja formatu daty w gemspec


111

Otrzymuję następujący błąd, kiedy próbuję używać klejnotów w oknach, a także odniosłem się do tego postu z przepełnieniem stosu i zaktualizowanego rubygemów i szyn. Ale nic nie mogło rozwiązać problemu.

Poniżej znajduje się pełny błąd,

    D: \> gem env
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-25 00:00:00
.000000000Z "
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-03 00:00:
00.000000000 Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-26 00:00:
00.000000000 Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-09-01 00: 00: 0
0,000000000 Z "
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-09
-01 00: 00: 00.000000000Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-27 00
: 00: 00.000000000Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-25 00:00:00
.000000000Z "
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-03 00:00:
00.000000000 Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-26 00:00:
00.000000000 Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-09-01 00: 00: 0
0,000000000 Z "
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-09
-01 00: 00: 00.000000000Z ”
Nieprawidłowy gemspec w [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-08-27 00
: 00: 00.000000000Z ”
Środowisko RubyGems:
  - WERSJA RUBYGEMS: 1.7.2
  - WERSJA RUBY: 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
  - KATALOG INSTALACJI: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - KATALOG WYKONYWANY: D: /RailsInstaller/Ruby1.8.7/bin
  - PLATFORMY RUBYGEMS:
    - rubinowy
    - x86-mingw32
  ŚCIEŻKI GEM:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Documents and Settings / jeygokul / .gem / ruby ​​/ 1.8.2
  - KONFIGURACJA GEMÓW:
     -: update_sources => true
     -: verbose => true
     -: benchmark => false
     -: backtrace => false
     -: bulk_threshold => 1000
  - ZDALNE ŹRÓDŁA:
     - http://rubygems.org/

Odpowiedzi:


45

Rozwiązałem ten problem, aktualizując RubyGems do wersji 1.8.10 z

gem update --system

Edycja: Możesz także spróbować (zgodnie z sugestią ZeissS)

gem install rubygems-update
update_rubygems

16
Mam 1.8.10 i nadal to
rozumiem

3
Spróbuj uruchomić „klejnot nieskazitelny [nazwa klejnotu]” dla klejnotów, które powodują te ostrzeżenia.
Michael,

2
U mnie też to nie zadziałało - ponieważ polecenie „gem update --system” spowodowało dokładnie ten sam problem, a „gem pristine” nic nie dało. Musiałem postępować zgodnie z rozwiązaniem @ Romain_Tribes i ręcznie usunąć pliki gemspec przed ponownym uruchomieniem aktualizacji klejnotów
Taryn East

4
To nie jest bardzo dobra opcja na Ubuntu, szczególnie dla zwykłych użytkowników Rubiego.
Phillip Whelan

2
Odpowiedź GaborKomaromi poniżej (lub jedno ze znalezisk .. w komentarzach) działa. Ten nie.
gotofritz

132

Ostateczne rozwiązanie jest następujące:

Wyszukaj pliki „spec” w katalogu Ruby: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ specyfikacji *

Jeśli plik gemspec zawiera coś takiego: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Następnie usuń część 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Po zapisaniu tych plików gemspec problem został rozwiązany.


2
To zadziałało dla mnie (ruby 1.8.7 / win7), inne rozwiązania nie
Felix Alcala

3
Działał jak urok na ubuntu z rubinem 1.8.7, klejnotem 1.7.2. Dzięki!
Dan

9
Spowoduje to usunięcie ciągu znaków z pliku specyfikacji: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing

17
znajdź /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' w Ubuntu
kubek2k

4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo,

46

Żadne z tych rozwiązań nie działało dla mnie. Aby to naprawić, usunąłem całą zawartość wspomnianego katalogu (trochę / ścieżka / do / specyfikacja /), a następnie zainstalowałem klejnoty, których potrzebuję (właściwie, Bundler, a następnie instalacja pakietu).


To jest proste, szybkie i skuteczne. Spróbuj tego przed innymi.
Tim Scollick

1
Jedyne rozwiązanie, które też mi się sprawdziło. Ale nie jestem pewien, czy to właściwa poprawka.
Suren

To zadziałało dla mnie. To właśnie uruchamianie gem udpate - system, który doprowadził mnie do tego problemu!
Dave Isaacs

12

Oprócz biegania gem update --systemużyłem gem install <gem with bad gemspec>na każdym z obiektów gem env zgłoszonych jako złe. To wyczyściło błędy na moim komputerze.


5
Możesz przeinstalować za pomocą „gem pristine [gemname]” lub zrobić „gem pristine - all”, aby ponownie zainstalować klejnoty z pamięci podręcznej bez ich ponownego pobierania.
Michael,


6

Miałem ten sam problem podczas próby zainstalowania GEM na 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"

Powyższe opcje nie działają dla mnie. gem envzgłosił następujące informacje:

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

Więc przypuszczałem, że ten problem był spowodowany tym, że wymagałem zainstalowania nowszej wersji RubyGems.

Wydanie roku gem update --systemskutkowało następującym ostrzeżeniem:

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.

Jednak w końcu udało mi się zaktualizować rubygemsdo wersji 1.8.15, wydając:

sudo gem install rubygems-update && update_rubygems

Potem wszystko działało, powodzenia! :)


Dla mnie na Ubuntu zajęło to, sudo apt-get purge rubygemsa sudo apt-get install rubygemsnastępnie ponowne zainstalowanie wszystkich klejnotów. Niezręczne, ale przynajmniej zadziałało: P (powyższe nie zadziałało)
Jeff Tratner

3

Nieprawidłowy gemspec w [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: nieprawidłowy format daty w specyfikacji: „2011-09-09 00: 00: 00.000000000Z”

Prostym rozwiązaniem tego rodzaju problemu jest przejście do pliku ... np.

Krok 1. cd /var/lib/gems/1.8/specifications
krok 2. otwórz plik (chronic-0.6.4.gemspec) w wybranym przez ciebie edytorze ... (gedit chronic-0.6.4.gemspec)
krok 3. zmień s.date =% q {2011-10-13 00: 00: 00.000000000Z} na s.date =% q {2011-10-13}

Twoje zdrowie :)


2

Po uaktualnieniu do 10.10 miałem ten sam problem na moim ubuntu. Żadne z powyższych nie działało dla mnie. Musiałem zainstalować skrypt update_rubygems z http://rubygems.org/pages/download i raz go uruchomić. Posłowie wszystko działało.


2

Naprawiłem ten problem `` nieprawidłowa specyfikacja formatu daty '', zmieniając odpowiednią linię w D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec, umieszczając s.date = Time.now zamiast s.date = "2011-08-25 00: 00: 00.000000000Z" To samo można wykorzystać również w innych plikach.


2

Mam zbyt wiele klejnotów, by naprawić je jeden po drugim i wypróbować oba update_rubygemsigem pristine --all nadal nie mam szczęścia.

Więc używam rvm clear gemsetdo usuwania wszystkich klejnotów z niewłaściwą specyfikacją. Wykonaj, bundle installaby ponownie zainstalować wszystkie klejnoty i Viola!


Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
Jonathan

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' *

1

Rozwiązany uruchamiając gem update --systempotem gem update.


działało dla mnie, właśnie otrzymałem ten błąd po wykonaniu aktualizacji klejnotów - system, większość z nich zniknęła po aktualizacji klejnotów. dla innych usunąłem plik gemspec.
mrbrdo,

1

Różne rozwiązania wymienione w tych odpowiedziach nie działały w moim przypadku. To, co zadziałało, to ponowna instalacja określonych wersji obraźliwego klejnotu. W twoim przypadku wyglądałoby to tak:

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

Myślę, że gem pristine xxx yyy zzzalbo gem pristine --allnie może być wychodzisz zawsze (zawsze?) Do repozytoriów kosztownych natomiast gem install xxx -v v.r.mrobi.

W każdym razie, ponowna instalacja obraźliwych wersji klejnotów zadziałała dla mnie, chociaż była nużąca ...



1

"gem install rubygems-update", "update_rubygems", a następnie "gem pristine --all" to kombinacja, która rozwiązała problem po tym, jak żadna z wymienionych wcześniej nie działała.


0

W moim przypadku wspomniane wersje gemów nie zostały nawet zainstalowane. Miałem te klejnoty, ale nie wersje, których specyfikacje gemów powodowały błąd. Dlatego właśnie usunąłem każdy z plików /path/to/specifications/offending-XYZZ.gemspec.


0

To naprawdę nie jest odpowiedź, ale jeśli ktoś ma ochotę kopać więcej, znalazłem tę specyfikację gemspec tutaj: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (przewiń w dół do date = date () i kliknij aby pokazać źródło):

@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

Wydaje mi się, że to jest kod, który analizuje ten gemspec i wygląda na to, że format daty w plikach, które pokazują błędy, nie jest zgodny z tym.

To, co zrobiłem, to po prostu ręcznie naprawić te obraźliwe gemspecy, jak zasugerowałem powyżej (zmiana daty na „rrrr-mm-dd”, to działa.

Wszystkie specyfikacje rubygem, które miałem, które miały ten problem, również mają linię

s.rubygems_version =% q {1.3.5}

Więc zgaduję, że to tylko stare klejnoty? A w ogóle o co chodzi z tymi% q {...}?


0

Jeśli masz ten błąd na Ubuntu 11.04, moim rozwiązaniem były następujące wiersze poleceń:

$ sudo apt-get install ruby1.9.1

Po wykonaniu tej czynności nie otrzymasz błędu daty.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.