【发布时间】:2014-11-06 22:42:29
【问题描述】:
我试图了解宝石应该去哪里。我写了一个 ruby 脚本,我试图将其转换为 gem。我使用 bundler 为我的 gem 创建了一个骨架。
现在我有 2 个文件“Gemfile”和“mygem.gemspec”。
在我的 Gemfile 中,我有两行说:
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 = ["mygem@gmail.com"]
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 个 gem,'facter'、'debugger'、'json'。
我在哪里添加这些?怎么做?
我发现了这个: http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
现在这家伙说(来自链接):
“在开发 gem 时,请在 Gemfile 中使用 gemspec 方法以避免重复。一般情况下,gem 的 Gemfile 应包含 Rubygems 源和单个 gemspec 行...”
所以我保留了我的 gemspec 文件原样..
我查看了 facter 的官方存储库,它的 Gemfile 是: https://github.com/puppetlabs/facter/blob/master/Gemfile
..他的 gemspec 是: https://github.com/puppetlabs/facter/blob/master/.gemspec
现在为什么他在 Gemfile 中有他的宝石,而在 gemspec 中什么也没有?他所做的和我读到的完全相反。
有人可以帮我解释清楚吗?
谢谢!
【问题讨论】: