Gemspec không hợp lệ do định dạng ngày trong đặc tả


89

Khi tôi đưa một viên đá quý mà tôi đã tạo ra, nhờ Bundler (phiên bản 1.0.12), trong một Gemfile và sau đó tôi cố gắng đóng gói hoặc cào giống như vậy:

$ rake

Tôi nhận được thông báo lỗi này:

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

Tôi đang sử dụng Mac OS X cuối cùng (10.6.4), với:

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

và:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

Tôi thực sự không biết làm thế nào để giải quyết vấn đề này. Cảm ơn cho bất kỳ ý tưởng.


Tôi đang gặp những lỗi này liên tục bây giờ !!! Bạn đã sửa chữa như thế nào? Hai câu trả lời cho đến nay không phải là hữu ích ...
Meltemi

Cái mà mọi người đề xuất, là tệp chỉ đọc. Làm thế nào tôi có thể thay đổi nó?
chhantyal

Câu trả lời:


143

Đây là cách tôi sửa lỗi "định dạng ngày không hợp lệ trong đặc tả":

1.) Đi tới thư mục thông số kỹ thuật có tại:

/usr/local/lib/ruby/gems/1.8/specifications/

2.) Tìm thông số kỹ thuật gây ra sự cố.

3.) Thay đổi s.date = %q{2011-05-21 00:00:00.000000000Z}thànhs.date = %q{2011-05-21}

Đó là một chiến thắng cho tôi! Chúc may mắn


Làm việc một điều trị, điều này làm tôi đau đầu!
David Archer

Đã làm cho tôi! Tôi đang sử dụng Windows XP với Ruby 1.8 được cài đặt. Em.websocket-0.3.2.gemspec đã gây ra lỗi này cho tôi khi cố gắng sử dụng 'livereload' ( livereload.com ).
program247365

Làm việc cho tôi quá, trên linux trên mạn 1.6.4
Gepsens

Nó khắc phục sự cố cho một viên ngọc, nhưng việc làm theo các viên đá quý đã cài đặt có thể gây ra lỗi này một lần nữa.
MickaelFM

2
điều này khiến tôi phát điên ... tôi có nên thay đổi gemspec của 50 viên ngọc của bên thứ 3 không? tại sao họ vẫn chưa cập nhật gemspec, một năm đã trôi qua ..
oma 19/02/12

60

Đây là lệnh để sửa lỗi này cho tất cả đá quý của bạn:

perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec

Nó chuyển đổi s.date = %q{2011-05-21 00:00:00.000000000Z}thành s.date = %q{2011-05-21}và sẽ khắc phục sự cố của bạn.


Mẹo hay để tạo một bản sao lưu nhanh trước khi thực hiện việc này:git init . && git commit -am "backup
troyt

Tại sao cố gắng thay đổi định dạng ngày, nó nói rằng tôi không có quyền làm như vậy. Để làm gì?
chhantyal

@chhantyal Sau đó, bạn cần chạy nó như sudo. Cám ơn bạn rất nhiều về điều này. Đã tiết kiệm cho tôi rất nhiều thời gian.
Matt McClure

21

Hãy để ý nhận xét từ Damian Nowak. Các lệnh này có thể làm rối các viên ruby ​​của bạn!

Trên Ubuntu 11.10, cách sau đã giải quyết được lỗi này:

sudo gem install rubygems-update
sudo update_rubygems     

Cách sau có thể hoạt động trên một số hệ thống nhưng không hoạt động trên Debian:

sudo gem update --system

Tuyệt vời, cũng hoạt động với phiên bản cuối cùng của oneiric. Nhưng điều này dường như làm sạch tất cả các viên ngọc được cài đặt thủ công.
zehrer

1
Đừng sử dụng nó. Nó làm lộn xộn những viên rubyge của tôi. Tôi đã phải rm -rf rất nhiều thứ và hoàn nguyên về rubygem ban đầu từ repo. Cài đặt rubyge hoàn toàn theo cách thủ công hoặc sử dụng rubyge được cung cấp bởi Ubuntu. Ngoài ra, bạn có thể tìm kiếm các rubyge hiện tại trong PPA. (Tôi ước mình có thể hoàn tác +1 của mình đã được thực hiện khoảng một tháng trước)
Nowaker

1
@DamianNowak Rất tiếc khi nghe điều này. Tôi đã thêm một cảnh báo vào câu trả lời!
Đánh dấu

14

Bạn có thể nâng cấp của mình gem. Để khắc phục điều này, bạn có thể chỉnh sửa gemspectệp trực tiếp - từ

2011-04-21 00:00:00.000000000Z

đến

YYYY-MM-DD

Hoặc nâng cấp đường ray của bạn cũng

sudo gem update rails

Nó sẽ khắc phục sự cố.


@Meltemi nó sẽ dưới specificationsthư mục này là của tôi specificationsđường dẫn thư mục -/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

+1 để cập nhật đường ray - nó đã khắc phục được sự cố, mặc dù nó đưa ra các cảnh báo tương tự lúc đầu, nó cài đặt chính xác và sự cố không còn xảy ra nữa.
Adam Davis

6

Không chỉ định thời gian ... chỉ ngày. 2011-04-21sẽ hoạt động tốt.


Đá quý :: Đặc điểm kỹ thuật.new do | s | s.name = "myplugin" s.version = "1.0.0" s.platform = Gem :: Platform :: RUBY s.authors = ["..."] s.email = ["..."] s .homepage = "http: // ..." s.summary =% q {...} s.description =% q {...} s.rubyforge_project = "myplugin" s.files = git ls-files.split ("\ n ") s.test_files = git ls-files -- {test,spec,features}/*.split (" \ n ") s.require_paths = [" lib "] end
Zag zag ..

Cảm ơn câu trả lời của bạn. Tôi đồng ý với bạn, nhưng tôi không sử dụng bất kỳ ngày hoặc giờ nào trong tệp myplugin.gemspec. Đá quý được Bundler tạo tự động. Tôi nghĩ vấn đề này có thể là do Bundler hoặc RVM ... Thật kỳ lạ.
Zag zag ..

4

Có cùng một vấn đề. Nó trông giống như một lỗi trong rubygem. Đây là cam kết đã sửa nó: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

Bạn cần cập nhật rubygems và Bundler lên phiên bản mới nhất. Nếu bạn vẫn gặp sự cố sau đó, thì bạn có thể cần phải xóa và sau đó cài đặt lại bất kỳ viên ngọc nào đang gây ra sự cố cho bạn.


Chà, ngoại trừ Redmine sử dụng phiên bản Rails 2.3.11 của riêng mình, Rails 2.3.11 không thành công với RubyGems> = 1.7.0 và cam kết mà bạn đề cập là ngày 19 tháng 5 năm 2011, hậu 1.7.0 (ngày 1 tháng 4, 2011). Đoán trong trường hợp đó bạn cần chỉnh sửa các tệp đặc tả.
Olivier 'Ölbaum' Scherler

3

Đây là bình luận nhiều hơn cho câu trả lời của ben hall, nhưng có vẻ như tôi chưa có đặc quyền đó

cập nhật đá quý dường như không hoạt động, tôi nghĩ rằng nó thậm chí không thể tải đá quý do định dạng ngày xấu. việc thay đổi ngày tháng theo cách thủ công quá khó chịu để thực hiện từng ngày một, vì vậy một grep:

grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}

Và đối với sed:

sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec

Và rủi ro của riêng bạn !! Tôi vẫn là một newbie quyến rũ, nhưng nó đã hiệu quả với tôi;)


2

Trên máy chủ slicehost của tôi, thư mục thông số kỹ thuật được đặt ở một vị trí khác. Đây là đường dẫn:

/usr/lib/ruby/gems/1.8/specification

Lỗi được cung cấp sẽ cung cấp đường dẫn đến thư mục thông số kỹ thuật.


2

Cách tiếp cận shotgun: Gỡ cài đặt tất cả đá quý và chạy lại gói.

  1. gem list --no-version | xargs gem uninstall -aIx
  2. rm -i `rvm gemdir`/specifications/*.gemspec
  3. gem update --system
  4. gem install bundler
  5. bundle install

Nếu bạn sử dụng một .rvmrctệp, thì hãy cẩn thận chạy dòng 2 vì gemdir có thể tạo thêm đầu ra.
Jared Beck,

1

(Cho đến khi bản sửa lỗi được đưa vào bản phát hành Rubygems ổn định), tôi đã giải quyết nó bằng cách cài đặt lại cùng một phiên bản của bất kỳ viên ngọc nào tạo cảnh báo bằng cách sử dụng công tắc --version của lệnh gem.


1

Như Ben Hall đã nói, bạn phải sửa tệp gemspec có thể thay đổi theo hệ thống. Để biết tệp nào là tệp, hãy xem tệp nào được thông báo trong báo cáo lỗi, ví dụ:

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

Trong ví dụ này, bạn phải chỉnh sửa tệp "/var/lib/gems/1.8/specification/svn2git-2.1.2.gemspec" và thay đổi "2011-12-28 00: 00: 00.000000000Z" cho "2011-12-28" trong tùy chọn s.date.


1

Có vấn đề này vẫn còn bây giờ. Cập nhật Rubygems đã giải quyết ổn thỏa:

gem update --system

0

Đây là môi trường của tôi:

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
- INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

Cuối cùng tôi đã tìm ra nguyên nhân / cách để ngăn chặn những lỗi này trên hệ thống của mình. Tôi vừa hoàn nguyên về phiên bản Dưa chuột và Dưa chuột-rails 1.0.2. Sử dụng các phiên bản mới nhất đã làm điều này ...


0

Ngay cả khi bạn cài đặt phiên bản mới nhất của gem với định dạng ngày hợp lệ, hãy đảm bảo rằng gem cleanup GEMNAMEsau đó, gembạn vẫn sẽ phàn nàn về các thông số kỹ thuật của các thư viện cũ hơn.


0

Cài đặt lại đá quý của bạn có thể là giải pháp trong nhiều trạng thái máy hơi khác nhau này.

Trong trường hợp của tôi:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

Trong trường hợp của tôi, các giải pháp khác sáng tạo hơn đã thất bại.

Vấn đề của tôi đã gặp phải Invalid gemspeckhi cố gắng sử dụng cocoapods. Tôi chạy gem install cocoapodslại và mọi thứ đều hồng hào.

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.