Thông số định dạng ngày không hợp lệ trong gemspec


111

Tôi gặp lỗi sau khi cố gắng sử dụng đá quý trong cửa sổ và tôi cũng đã tham khảo bài đăng stackoverflow này và các rubygem và đường ray được cập nhật. Nhưng không có gì có thể giải quyết vấn đề.

Sau đây là lỗi hoàn chỉnh,

    D: \> gem env
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/tilt-1.3.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-25 00:00:00
.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/execjs-1.2.4.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-03 00:00:
00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/temple-0.3.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-26 00:00:
00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/guard-0.6.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-09-01 00: 00: 0
0,000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/guard-livereload-0.3.1.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/rack-cache-1.0.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-27 00
: 00: 00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/tilt-1.3.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-25 00:00:00
.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/execjs-1.2.4.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-03 00:00:
00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/temple-0.3.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-26 00:00:
00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/guard-0.6.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-09-01 00: 00: 0
0,000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/guard-livereload-0.3.1.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec không hợp lệ trong [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification
/rack-cache-1.0.3.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-08-27 00
: 00: 00.000000000Z "
Môi trường RubyGems:
  - PHIÊN BẢN RUBYGEMS: 1.7.2
  - PHIÊN BẢN RUBY: 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
  - HƯỚNG DẪN CÀI ĐẶT: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY THỰC HIỆN: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - HƯỚNG DẪN THỰC HIỆN: D: /RailsInstaller/Ruby1.8.7/bin
  - NỀN TẢNG RUBYGEMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Documents and Settings / jeygokul / .gem / ruby ​​/ 1.8
  - CẤU HÌNH GEM:
     -: update_sources => true
     -: verbose => true
     -: điểm chuẩn => sai
     -: backtrace => false
     -: số lượng lớn_threshold => 1000
  - NGUỒN TỪ XA:
     - http://rubygems.org/

Câu trả lời:


45

Tôi đã khắc phục sự cố này bằng cách nâng cấp RubyGems của mình lên 1.8.10 với

gem update --system

Chỉnh sửa: Bạn cũng có thể thử (theo đề xuất của ZeissS)

gem install rubygems-update
update_rubygems

16
Tôi có 1.8.10 và vẫn nhận được điều này
DGM

3
Hãy thử chạy "gem nguyên sơ [gemname]" cho các viên ngọc gây ra những cảnh báo đó.
Michael

2
Điều này cũng không hiệu quả với tôi - vì lệnh "gem update --system" gây ra cùng một vấn đề và "gem nguyên sinh" không làm gì cả. Tôi đã phải làm theo @ giải pháp Romain_Tribes và xóa các tập tin gemspec bằng tay trước khi tái chạy một bản cập nhật đá quý
Taryn Đông

4
Đây không phải là một lựa chọn tốt trên ubuntu, đặc biệt là đối với những người dùng ruby ​​thông thường.
Phillip Whelan

2
Câu trả lời của GaborKomaromi dưới đây (hoặc một trong những phát hiện .. trong các bình luận) hoạt động. Cái này thì không.
gotofritz

132

Giải pháp cuối cùng là:

Tìm kiếm các tệp "đặc tả" trong thư mục Ruby của bạn: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ spec *

Nếu tệp gemspec chứa nội dung như sau: s.date =% q {2011-10-13 00: 00: 00.000000000Z } thì hãy xóa phần 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Sau khi lưu các tệp gemspec đó, vấn đề đã được giải quyết.


2
Điều này làm việc cho tôi (ruby 1.8.7 / Win7), các giải pháp còn lại thì không
Felix Alcala

3
Hoạt động như một sự quyến rũ trên ubuntu với ruby ​​1.8.7, gem 1.7.2. Cảm ơn!
Dan

9
Thao tác này sẽ xóa chuỗi khỏi tệp thông số kỹ thuật: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing

17
find /var/lib/gems/1.8/specification -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' trong Ubuntu
kubek2k

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

46

Không có giải pháp nào trong số này hiệu quả với tôi. Để khắc phục, tôi đã xóa tất cả nội dung của thư mục được đề cập (một số / đường dẫn / đến / đặc tả /), sau đó tôi cài đặt những viên đá quý tôi cần (thực ra là Bundler sau đó gói cài đặt).


Điều này là đơn giản, nhanh chóng và hiệu quả. Hãy thử cái này trước bất kỳ cái nào khác.
Tim Scollick

1
Giải pháp duy nhất phù hợp với tôi. Nhưng không chắc đây có phải là cách sửa chữa phù hợp hay không.
Suren

Điều này đã làm việc cho tôi. Nó đang chạy gem udpate --system khiến tôi gặp sự cố này!
Dave Isaacs

12

Ngoài việc chạy, gem update --systemtôi đã sử dụng gem install <gem with bad gemspec>từng item gem env được báo cáo là xấu. Điều này đã làm sạch các lỗi trên máy của tôi.


5
Bạn có thể cài đặt lại bằng "gem nguyên sơ [gemname]" hoặc thực hiện "ngọc nguyên sơ --all" để cài đặt lại đá quý từ bộ nhớ đệm mà không cần tải xuống lại.
Michael


6

Gặp sự cố tương tự khi cố gắng cài đặt GEM trên 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"

Các tùy chọn trên không làm việc cho tôi. gem envđã báo cáo như sau:

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

Vì vậy, tôi cho rằng sự cố này là do tôi yêu cầu cài đặt phiên bản RubyGems mới hơn.

Phát hành gem update --systemyeilded cảnh báo sau đây:

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.

Tuy nhiên, cuối cùng tôi đã có thể cập nhật rubygemslên 1.8.15 bằng cách phát hành:

sudo gem install rubygems-update && update_rubygems

Mọi thứ đều hoạt động sau đó, chúc may mắn! :)


Đối với tôi trên Ubuntu, nó đã sudo apt-get purge rubygemstiếp theo sudo apt-get install rubygemsvà sau đó cài đặt lại tất cả các gem. Ngại ngùng, nhưng ít nhất nó đã hoạt động: P (ở trên không hiệu quả với tôi)
Jeff Tratner

3

Gemspec không hợp lệ trong [/var/lib/gems/1.8/specilities/chronic-0.6.4.gemspec]: định dạng ngày không hợp lệ trong đặc tả: "2011-09-09 00: 00: 00.000000000Z"

Cách khắc phục đơn giản cho loại vấn đề này là điều hướng đến tệp .. ví dụ.

Bước 1. cd /var/lib/gems/1.8/specification
bước 2. mở tệp (Chronic-0.6.4.gemspec) trong trình soạn thảo của bạn lựa chọn ... (gedit Chronic-0.6.4.gemspec)
bước 3. thay đổi s.date =% q {2011-10-13 00: 00: 00.000000000Z} thành s.date =% q {2011-10-13}

Chúc mừng :)


2

Tôi vừa gặp sự cố tương tự trên ubuntu của mình sau khi nâng cấp lên 10.10. Không có điều nào ở trên phù hợp với tôi. Tôi phải cài đặt tập lệnh update_rubygems từ http://rubygems.org/pages/download và chạy nó một lần. Sau đó mọi thứ đều hoạt động.


2

Tôi đã khắc phục sự cố 'đặc tả định dạng ngày không hợp lệ' này bằng cách thay đổi dòng tương ứng trong D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specification/tilt-1.3.3.gemspec bằng cách đặt s.date = Time.now thay vì s.date = "2011-08-25 00: 00: 00.000000000Z" Cũng có thể sử dụng các tệp khác.


2

Tôi có quá nhiều viên ngọc để sửa từng viên một, và thử cả hai update_rubygemsgem pristine --allvẫn không gặp may.

Vì vậy, tôi sử dụng rvm clear gemsetđể loại bỏ tất cả các đá quý với gemspec sai. Thực hiện bundle installcài đặt lại tất cả các viên ngọc và 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

Giải quyết bằng cách chạy gem update --systemsau đó gem update.


đã làm việc cho tôi, tôi chỉ gặp lỗi đó sau khi cập nhật đá quý - hệ thống, hầu hết chúng đã biến mất sau khi cập nhật đá quý. đối với những người khác, tôi đã xóa tệp gemspec.
mrbrdo

1

Các giải pháp khác nhau được ghi trong những câu trả lời này không hoạt động với tôi. Những gì đã làm là cài đặt lại các phiên bản cụ thể của viên ngọc vi phạm. Trong trường hợp của bạn, điều đó sẽ trông giống như:

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

Tôi nghĩ rằng gem pristine xxx yyy zzzhoặc gem pristine --allcó thể không luôn luôn đi ra ngoài (bao giờ?) Vào kho lưu trữ đá quý trong khi gem install xxx -v v.r.mđó.

Dù sao, việc cài đặt lại các phiên bản vi phạm của các viên đá quý cũng có tác dụng với tôi, mặc dù điều đó thật tẻ nhạt ...


1

rvm gemset clearvà sau đó bundle installlàm việc cho tôi!


1

"gem install rubygems-update", "update_rubygems", rồi "gem nguyên sơ --all" là sự kết hợp đã giải quyết được vấn đề cho tôi sau khi không có tổ hợp nào được liệt kê trước đó hoạt động.


0

Trong trường hợp của tôi, các phiên bản đá quý được tham chiếu thậm chí còn chưa được cài đặt. Tôi đã có những viên ngọc đó, nhưng không phải phiên bản mà gemspec của họ gây ra lỗi. Vì vậy, tôi vừa xóa từng tệp /path/to/specification/offending-XYZZ.gemspec.


0

Đây không thực sự là câu trả lời nhưng nếu ai đó cảm thấy muốn tìm hiểu thêm, tôi đã tìm thấy thông số gemspec này ở đây: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (cuộn xuống date = date () và nhấp vào để hiển thị nguồn):

@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

Vì vậy, tôi đoán đây là mã phân tích cú pháp gemspec đó và có vẻ như định dạng ngày tháng trong các tệp hiển thị lỗi không phù hợp với định dạng này.

Những gì tôi đã làm là chỉ sửa chữa các gemspec vi phạm đó theo cách thủ công như đã đề xuất ở trên (thay đổi ngày tháng thành "yyyy-mm-dd", nó phù hợp với tôi.

Tất cả các thông số kỹ thuật của rubygem mà tôi gặp phải vấn đề này cũng có một dòng

s.rubygems_version =% q {1.3.5}

Vì vậy, tôi đoán đây chỉ là những viên ngọc cũ? Và điều gì xảy ra với% q {...} đó?


0

Nếu bạn gặp lỗi này trên Ubuntu 11.04, giải pháp của tôi là các dòng lệnh sau:

$ sudo apt-get install ruby1.9.1

Sau khi làm điều này, bạn sẽ không gặp lỗi ngày tháng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.