2011-10-18 14 views
18

मैं client_package नामक एक कस्टम मणि बनाने की कोशिश कर रहा हूं लेकिन यह असफल रहा है।एक मणि बनाने की कोशिश कर रहा है, एक जेम :: अमान्य स्पेसिफिकेशन अपवाद: "[...] फ़ाइलें नहीं हैं"

मेरे निर्देशिका संरचना इस तरह दिखता है:

client_package 
    Gemfile 
    Gemfile.lock 
    client_package.gemspec 
    Rakefile 
    Readme.md 
    .gitignore 
    .git 
     ...git files... 
    lib 
     client_package.rb 
     client_package 
      version.rb 
      api.rb 
      ...more... 

और मेरे client_package.gemspec इस तरह दिखता है:

# encoding: UTF-8 
require File.expand_path('../lib/client_package/version', __FILE__) 

Gem::Specification.new do |s| 
    s.name = 'client_package' 
    s.version = ClientPackage::VERSION 
    s.platform = Gem::Platform::RUBY 

    s.files = `git ls-files`.split('\n') 
    s.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) } 
    s.require_paths = ['lib'] 

    # also have s.authors, s.email, s.homepage, s.summary, s.description 

    s.add_dependency 'httparty' 
    s.add_dependency 'json' 
end 

और मेरे सभी फाइलों को प्रतिबद्ध हैं और Git राज्य साफ है।

शीर्ष client_package निर्देशिका के भीतर से, मैं gem build client_package.gemspec चलाने के लिए और इस त्रुटि मिलती है:

ERROR: While executing gem ... (Gem::InvalidSpecificationException) 
    [".gitignore 
Gemfile 
Rakefile 
Readme.md 
client_package.gemspec 
lib/client_package.rb 
lib/client_package/api.rb 
lib/client_package/version.rb 
lib/client_package/...more... 
"] are not files 

यह मुझे puzzling है, क्योंकि उन निश्चित रूप से मेरे लिए फ़ाइलों होने लगते हैं। वैसे भी, मुझे लगा कि कुछ फाइल समस्याएं हैं यदि यह इन फ़ाइलों को नहीं देख रही है, और बस कुछ परीक्षण और त्रुटि कर रही है, तो मुझे पता चला कि यदि मैं एक निर्देशिका (शीर्ष-स्तर client_package से ऊपर) ऊपर जाता हूं और फिर gem build client_package/client_package.gemspec चलाता है तो दिखाई देता है पहले काम करने के लिए, फाइल client_package-1.0.0.gem बना रही है। लेकिन कुछ अभी भी गलत है। अगर मैं उस मणि को gem install client_package-1.0.0.gem के साथ स्थापित करता हूं जो काम पर प्रतीत होता है। लेकिन फिर यह:

require 'rubygems' 
require 'client_package' 

LoadError: no such file to load -- client_package देता है।

मुझे लगता है कि मुझे कुछ छोटा लेकिन महत्वपूर्ण याद आना चाहिए। कोई विचार?

उत्तर

12

This'd छोटे लेकिन महत्वपूर्ण हो:

split('\n')split("\n") होना चाहिए?

क्योंकि यह लग रहा है

[".gitignore 
Gemfile 
Rakefile 
Readme.md 
client_package.gemspec 
lib/client_package.rb 
lib/client_package/api.rb 
lib/client_package/version.rb 
lib/client_package/...more... 
"] 

की तरह एक भी बहु स्ट्रिंग, कई तार की एक सरणी नहीं युक्त एक सरणी हो सकता है।

+1

मैं मूर्ख हूं। धन्यवाद! –

+3

मुझे और एकल-उद्धरण के लिए मेरी लत =)। –

32

इस पुराने धागे को पुनर्जीवित करने के लिए बहाने, लेकिन मुझे एक और कारण मिला: यदि आपने गिट में जांच नहीं की है, तो कुछ पुरानी (हटाई गई फाइलें) हस्तक्षेप कर सकती हैं: डिस्क पर वे मौजूद नहीं हैं, लेकिन git ls-files migh उन्हें रिपोर्ट करते हैं मणि में शामिल किया जा रहा है।

फ़ाइलों में जांचें और यह सटीक त्रुटि खत्म हो गई है।

+0

यह वास्तव में हमारी समस्या थी। धन्यवाद! – snowe

+6

चीयर्स @ हूगोलोमैन! मेरे पास एक हटाई गई फ़ाइल थी जो इस समस्या का कारण बन रही थी - एक बार जब मैंने 'git rm ' चलाया (उदाहरण के लिए फ़ाइल हटाना चरणबद्ध था) तो मैं ठीक था - मुझे वास्तव में प्रतिबद्ध नहीं होना था। – eebbesen

+2

इस मामले में यदि आप प्रतिबद्ध नहीं करना चाहते हैं, तो आप केवल 'गिट एड' कर सकते हैं ताकि मणि कमांड हटाए गए फ़ाइलों को अनदेखा कर सके .. – Swaps

संबंधित मुद्दे