ข้อกำหนดรูปแบบวันที่ไม่ถูกต้องใน gemspec


111

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามใช้อัญมณีใน windows และฉันยังอ้างถึง โพสต์ stackoverflow นี้และอัปเดตทับทิมและราง แต่ไม่มีอะไรสามารถแก้ปัญหาได้

ต่อไปนี้เป็นข้อผิดพลาดทั้งหมด

    D: \> อัญมณี 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
  - รุ่น RUBY: 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
  - ทิศทางการติดตั้ง: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY ดำเนินการ: 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
  - การกำหนดค่าอัญมณี:
     -: update_sources => จริง
     -: verbose => จริง
     -: เกณฑ์มาตรฐาน => เท็จ
     -: backtrace => เท็จ
     -: bulk_threshold => 1,000
  - แหล่งข้อมูลระยะไกล:
     - 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]" สำหรับอัญมณีที่ก่อให้เกิดคำเตือนเหล่านั้น
Michael

2
สิ่งนี้ไม่ได้ผลสำหรับฉันเช่นกันเพราะคำสั่ง "gem update --system" ทำให้เกิดปัญหาเดียวกันและ "gem pristine" ก็ไม่ได้ทำอะไรเลย ฉันต้องทำตามวิธีแก้ปัญหาของ @ Romain_Tribes และลบไฟล์ gemspec ด้วยมือก่อนที่จะรันการอัปเดตอัญมณีอีกครั้ง
Taryn East

4
นี่ไม่ใช่ตัวเลือกที่ดีมากในอูบุนตูโดยเฉพาะสำหรับผู้ใช้ทับทิมทั่วไป
Phillip Whelan

2
คำตอบของ GaborKomaromi ด้านล่าง (หรือหนึ่งในข้อค้นพบ .. ในความคิดเห็น) ได้ผล อันนี้ไม่ได้
gotofritz

132

ทางออกที่ดีที่สุดคือ:

ค้นหาไฟล์ "spec" ในไดเร็กทอรี Ruby ของคุณ: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ specification *

หากไฟล์ 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) วิธีแก้ปัญหาอื่น ๆ ไม่ได้ผล
Felix Alcala

3
ทำงานได้อย่างมีเสน่ห์บน Ubuntu ด้วยทับทิม 1.8.7 อัญมณี 1.7.2 ขอบคุณ!
Dan

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
Pedro Rolo

46

วิธีแก้ปัญหาเหล่านี้ไม่ได้ผลสำหรับฉัน ในการแก้ไขฉันลบเนื้อหาทั้งหมดของไดเร็กทอรีที่กล่าวถึง (บางส่วน / path / to / specification /) จากนั้นฉันจึงติดตั้งอัญมณีที่ฉันต้องการ (จริงๆแล้ว Bundler จากนั้นก็บันเดิลติดตั้ง)


วิธีนี้ง่ายรวดเร็วและมีประสิทธิภาพ ลองทำก่อนอย่างอื่น
Tim Scollick

1
ทางออกเดียวที่ใช้ได้ผลสำหรับฉันด้วย แต่ไม่แน่ใจว่านี่เป็นการแก้ไขที่ถูกต้องหรือไม่
สุเร

สิ่งนี้ได้ผลสำหรับฉัน มันกำลังใช้งาน gem udpate - ระบบที่ทำให้ฉันเจอปัญหานี้!
Dave Isaacs

12

นอกเหนือจากการเรียกใช้gem update --systemแล้วฉันยังใช้gem install <gem with bad gemspec>กับ env อัญมณีแต่ละรายการที่รายงานว่าไม่ดี นี่เป็นการล้างข้อผิดพลาดในเครื่องของฉัน


5
คุณสามารถติดตั้งใหม่ด้วย "gem pristine [gemname]" หรือ "gem pristine --all" เพื่อติดตั้งอัญมณีใหม่จากแคชโดยไม่ต้องดาวน์โหลดซ้ำ
Michael


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 (ข้างต้นไม่ได้ผลสำหรับฉัน)
Jeff Tratner

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. เปิดไฟล์ (chronic-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และเรียกใช้ครั้งเดียว Afterwords ทุกอย่างทำงานได้


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' )
Jonathan

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 = 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 นั้นและดูเหมือนว่ารูปแบบวันที่ที่อยู่ในไฟล์ที่แสดงข้อผิดพลาดจะไม่เป็นไปตามนี้

สิ่งที่ฉันทำคือเพียงแก้ไข gemspec ที่ไม่เหมาะสมเหล่านั้นด้วยตนเองตามที่แนะนำไว้ข้างต้น (เปลี่ยนวันที่เป็น "yyyy-mm-dd" มันใช้ได้กับฉัน

รายละเอียดทับทิมทั้งหมดที่ฉันมีที่มีปัญหานี้ยังมีเส้น

s.rubygems_version =% q {1.3.5}

ฉันเดาว่านี่เป็นแค่อัญมณีเก่า ๆ ? แล้ว% q {... } เหล่านั้นคืออะไร?


0

หากคุณมีข้อผิดพลาดนี้บน Ubuntu 11.04 วิธีแก้ปัญหาของฉันคือบรรทัดคำสั่งต่อไปนี้:

$ sudo apt-get install ruby1.9.1

หลังจากทำสิ่งนี้คุณจะไม่ได้รับข้อผิดพลาดวันที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.