विनिर्देश में दिनांक प्रारूप के कारण अमान्य रत्न


89

जब मैंने एक मणि को शामिल किया, जो कि बंडलेर (संस्करण 1.0.12), जेमफाइल में धन्यवाद और फिर मैं उसी तरह बंडल या रेक करने का प्रयास करता हूं:

$ rake

मुझे यह त्रुटि संदेश मिला है:

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"

मैं आखिरी मैक ओएस एक्स (10.6.4) के साथ हूं:

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

तथा:

$ 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

मैं वास्तव में नहीं देखता कि इस मुद्दे को कैसे हल किया जाए। किसी भी विचार के लिए धन्यवाद।


मुझे अब लगातार ये त्रुटियाँ हो रही हैं !!! आपने कैसे तय किया? दो जवाब अब तक मददगार नहीं रहे हैं ...
Meltemi

यह कि सभी ने सुझाव दिया है, केवल फ़ाइल को पढ़ा जाता है। मैं इसे बदलने में किस तरह सक्षम हूं?
छन्नीलाल

जवाबों:


143

यहाँ मैं "विनिर्देश में अमान्य दिनांक स्वरूप" त्रुटि को ठीक करने का तरीका है:

1.) पर स्थित विनिर्देशों फ़ोल्डर में जाएं:

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

2.) उस युक्ति का पता लगाएं जो समस्या पैदा कर रही है।

3.) बदलें s.date = %q{2011-05-21 00:00:00.000000000Z}करने के लिएs.date = %q{2011-05-21}

यह मेरे लिए एक जीत है! शुभ लाभ


एक इलाज का काम किया, यह मेरे सिर में कर रहा था!
डेविड आर्चर

मेरे लिए काम किया! मैं रूबी 1.8 स्थापित के साथ विंडोज एक्सपी पर था। Em.websocket-0.3.2.gemspec मेरे लिए यह त्रुटि फेंक रहा था जब 'लिवरेलॉड' ( लिवरेलॉड डॉट कॉम ) का उपयोग करने की कोशिश कर रहा था ।
15:24 पर प्रोग्राम 247365

मेरे लिए भी काम किया है, पुराने 1.6.4 पर लाइनक्स पर
Gepsens

यह एक मणि के लिए समस्या को हल करता है, लेकिन बाद में स्थापित रत्नों के कारण यह त्रुटि हो सकती है।
मिकेलएफएम

2
यह मुझे पागल कर रहा है ... क्या मैं 50 3rd पार्टी रत्नों के रत्न बदलने वाला हूं? क्यों नहीं है कि वे gemspecs अद्यतन, एक साल बीत चुका है ..
ओमा

60

यहाँ अपने सभी रत्नों के लिए इसे ठीक करने की आज्ञा है:

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

यह आपकी समस्या को हल करता s.date = %q{2011-05-21 00:00:00.000000000Z}है s.date = %q{2011-05-21}और इसे ठीक करना चाहिए।


: अच्छी चाल ऐसा करने से पहले एक त्वरित बैकअप बनाने के लिएgit init . && git commit -am "backup
troyt

दिनांक प्रारूप को बदलने की कोशिश क्यों की जाती है, यह कहता है कि मेरे पास ऐसा करने की अनुमति नहीं है। क्या करें?
छन्नीलाल

@ चंचल आपको इसे सूडो के रूप में चलाने की आवश्यकता है। इस के लिए बहुत बहुत धन्यवाद! मुझे इतना समय बचाया।
मैट मैकक्लेयर

21

कृपया दामियन नोवाक की टिप्पणी पर ध्यान दें। ये आदेश संभवतः आपके माणिकों को गड़बड़ करते हैं!

Ubuntu 11.10 पर निम्नलिखित ने इस त्रुटि को हल किया:

sudo gem install rubygems-update
sudo update_rubygems     

निम्नलिखित कुछ प्रणालियों पर काम कर सकता है लेकिन डेबियन आधारित नहीं:

sudo gem update --system

ग्रेट, वनरिक के अंतिम संस्करण के साथ भी काम करता है। लेकिन यह सभी मैन्युअल रूप से स्थापित रत्नों को साफ करने के लिए लगता है।
ज़ेहर

1
इसका प्रयोग न करें। इसने मेरे माणिकों को गड़बड़ कर दिया। मुझे बहुत-सी चीजें आरएम-आरएफ और रेपो से मूल रूबिजम में वापस भेजनी पड़ीं। या तो पूरी तरह से मैन्युअल रूप से माणिक्य स्थापित करें या उबंटू द्वारा प्रदान की गई रूबीज का उपयोग करें। वैकल्पिक रूप से, आप पीपीए में वर्तमान माणिक के लिए देख सकते हैं। (मेरी इच्छा है कि मैं अपने +1 को पूर्ववत कर
सकूं

1
@DamianNowak इसे सुनने के लिए क्षमा करें। मैंने जवाब में एक चेतावनी जोड़ी!
मार्क

14

आप अपने उन्नत कर सकते हैं gem। इसे ठीक करने के लिए आप gemspecफ़ाइल को सीधे - से संपादित कर सकते हैं

2011-04-21 00:00:00.000000000Z

सेवा

YYYY-MM-DD

या अपनी रेल को भी अपग्रेड करें

sudo gem update rails

यह समस्या को ठीक कर देगा।


@Meltemi यह specificationsनिर्देशिका के तहत होगा यह मेरी specificationsनिर्देशिका पथ है -/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

+1 रेलिंग अपडेट करने के लिए - यह समस्या को ठीक करता है, हालाँकि यह शुरुआत में एक ही चेतावनी फेंकता है, यह सही तरीके से स्थापित होता है और समस्या अब नहीं होती है।
एडम डेविस

6

समय निर्दिष्ट न करें ... बस तारीख। 2011-04-21ठीक काम करना चाहिए।


मणि :: Specification.new do | s | s.name = "myplugin" s.version = "1.0.0" s.platform = Gem :: प्लेटफार्म :: RUBY s.authors = ["..."] s.email = ["..."] s .homepage = "http: // ..." s.summary =% q {...} s.description =% q {...} s.rubyforge_project = "myplugin" s.files = .split git ls-files("\")। n ") s.test_files =। split git ls-files -- {test,spec,features}/*(" \ n ") s.require_paths = [" lib "] अंत
ज़ग ज़ग ..

आपके उत्तर के लिए धन्यवाद। मैं आपसे सहमत हूं, लेकिन मैंने myplugin.gemspec फ़ाइल में किसी भी तारीख या डेटाटाइम का उपयोग नहीं किया है। बुंदलर द्वारा जेम को स्वतः उत्पन्न किया गया था। मुझे लगता है कि यह मुद्दा बुंडलर या आरवीएम के कारण हो सकता है ... यह अजीब है।
ज़ग ज़ग ..

4

एक ही मुद्दा था। यह रूबीम्स में एक बग जैसा दिखता है। यहाँ यह तय है कि इसे तय किया गया है: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

आपको माणिक और बंडलर को नवीनतम संस्करणों में अपडेट करने की आवश्यकता है। यदि उसके बाद भी आपको समस्या हो रही है, तो आपको हटाने की आवश्यकता हो सकती है और फिर किसी भी ऐसे रत्न को फिर से स्थापित करना चाहिए जो आपको समस्याएं दे रहे हैं।


खैर, रेडमाइन रेल के अपने 2.3.11 संस्करण का उपयोग करता है, रेल 2.3.11 रूबीजीम्स के साथ विफल रहता है = = 1.7.0, और आपके द्वारा उल्लेखित दिनांक 19 मई, 2011 को दिनांकित है, जो कि 1.7.1 पोस्ट (1 अप्रैल, 1) 2011)। उस स्थिति में अनुमान करें कि आपको कल्पना फ़ाइलों को संपादित करने की आवश्यकता है।
ओलिवियर 'एल्बाउम' श्लेर

3

यह बेन हॉल के जवाब के लिए एक टिप्पणी का अधिक है, लेकिन मुझे ऐसा विशेषाधिकार नहीं मिला है

मणि अद्यतन काम नहीं कर रहा था, सोच रहा था कि यह खराब तिथि प्रारूप के कारण मणि को लोड भी नहीं कर सकता। मैन्युअल रूप से तिथियों को बदलना एक-एक करके जाने के लिए बहुत निराशाजनक था, इसलिए एक grep:

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

और सेड के लिए:

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

और अपने जोखिम पर !! मैं अभी भी एक नौसिखिया हूँ, लेकिन यह मेरे लिए काम किया;)


2

मेरे स्लाइसहोस्ट सर्वर पर विनिर्देशों फ़ोल्डर एक अलग स्थान पर स्थित था। यहाँ पथ है:

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

प्रदान की गई त्रुटि विनिर्देशों फ़ोल्डर को पथ देना चाहिए।


2

बन्दूक दृष्टिकोण: सभी रत्नों और रेरन बंडल को अनइंस्टॉल करें।

  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

यदि आप किसी .rvmrcफ़ाइल का उपयोग करते हैं, तो लाइन 2 चलाने में सावधानी बरतें क्योंकि रत्न अतिरिक्त उत्पादन कर सकता है।
जेरेड बेक बेक

1

(जब तक बग फिक्स रूबीगम्स के एक स्थिर रिलीज में नहीं हो जाता है) मैंने रत्न कमांड के --version स्विच का उपयोग करके किसी भी चेतावनी देने वाले रत्नों के एक ही संस्करण को पुनर्स्थापित करके इसे हल किया।


1

जैसा कि बेन हॉल ने कहा, आपको रत्न फ़ाइल को ठीक करना होगा जो सिस्टम के लिए सिस्टम में बदल सकती है। यह देखने के लिए कि त्रुटि रिपोर्ट में कौन सी फ़ाइल किस फ़ाइल को बताती है, उदाहरण के लिए:

[/Var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec] में अमान्य रत्न: विनिर्देशन में अमान्य दिनांक प्रारूप: "2011-12-28 00: 00: 00.000000000Z"

इस उदाहरण में आपको "2011-12" के लिए "/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec" फ़ाइल को बदलना होगा और बदलना होगा "2011-12-28 00: 00: 00.000000000Z" s.date विकल्प में।


1

अभी भी यह समस्या थी। Rubygems को अपडेट करने से यह ठीक हो गया:

gem update --system

0

यह मेरा वातावरण है:

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/

मैं आखिरकार अपने सिस्टम पर इन त्रुटियों को रोकने के लिए एक कारण / एक तरीका खोजने में कामयाब रहा। मैं बस ककड़ी और ककड़ी-रेल संस्करण 1.0.2 पर वापस लौटता हूं। नवीनतम संस्करणों का उपयोग कर रहा था ...


0

यहां तक ​​कि अगर आप किसी मान्य दिनांक प्रारूप वाले मणि के नवीनतम संस्करण को स्थापित करते हैं, तो gem cleanup GEMNAMEबाद में सुनिश्चित करें , क्योंकि gemपुराने पुस्तकालयों के विनिर्देशों के बारे में अभी भी शिकायत करेंगे।


0

अपने रत्नों को फिर से स्थापित करना इन कुछ अलग-अलग मशीन राज्यों में से कई में समाधान हो सकता है।

मेरे मामले में:

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

मेरे मामले में, अन्य अधिक रचनात्मक समाधान विफल रहे।

Invalid gemspecजब कोकोपोड्स का उपयोग करने की कोशिश कर रहा था तब मेरा मुद्दा हो रहा था । मैं gem install cocoapodsफिर से भागा और सब कुछ रसभरा था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.