我想了解寶石應該去哪裏。我寫了一個ruby腳本,我正試圖將其轉換爲寶石。我用bundler爲我的寶石創建了一個框架。我應該把我的寶石放在我的寶石中?
現在我得到了2個文件'Gemfile'和'mygem.gemspec'。
在我的Gemfile我得到了2行說:
source 'https://rubygems.org'
# Specify your gem's dependencies in cudruby.gemspec
gemspec
..和我的 'mygem.gemspec' 我:
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'mygem/version'
Gem::Specification.new do |spec|
spec.name = "mygem"
spec.version = Mygem::VERSION
spec.authors = ["mygem"]
spec.email = ["[email protected]"]
spec.summary = %q{mygem}
spec.description = %q{mygem}
spec.homepage = "http://www.mygem.com"
spec.license = "MIT"
spec.files = Dir["{lib}/**/*.rb", "bin/*", "LICENSE", "*.md"]
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.6"
spec.add_development_dependency "rake"
end
現在用我的Ruby腳本依靠3顆寶石,'facter','調試器','json'。
我在哪裏添加這些?如何?
我發現這一點: http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
現在的人說(從鏈接):
「當開發一個寶石,使用gemspec方法在你的Gemfile,以避免重複一般情況下,創業板公司的Gemfile應該包含RubyGems的源和單gemspec行......」
所以我離開了我的gemspec文件,因爲它是..
I C hecked facter的官方信息庫及其Gemfile文件是: https://github.com/puppetlabs/facter/blob/master/Gemfile
..和他的gemspec是: https://github.com/puppetlabs/facter/blob/master/.gemspec
現在他爲什麼在Gemfile中他的寶石,並沒有在gemspec?他正在做的和我讀的完全相反。
請問有人能告訴我這個清楚嗎?
謝謝!
好的非常感謝。但我仍然有點困惑。那麼讓我們說有人安裝我的寶石,通過做'寶石安裝mygem',這也將安裝任何寶石gemspec權利?如果用戶已經使用過,但版本不同? 並且在這種情況下又是Gem中使用的Gemfile?什麼時候有人會使用'bundle install'來安裝一個gem?你用捆綁安裝來從gemfile中安裝寶石通常不是? – 2014-11-07 07:44:56
'bundle install'用於維護一個項目的一致環境,並且會盡量同時滿足所有的版本要求。這就是爲什麼簡單的開放式依賴是最好的。 Gemfile由Bundler使用,因此一個gem開發者可以擁有一組一致的依賴來開發。這包括處理安裝在系統上的多個版本,並選擇用於項目的版本。當gem *被安裝*時,安裝過程不直接使用'Gemfile',它使用由'.gemspec'構建的數據。 – 2014-11-07 08:09:23