0

我读到我们不应该用 Ruby Gem 打包测试文件

现在我想知道,我们是否应该打包 Gemspec。

例如,给定以下 Ruby Gem:

tree .
.
├── LICENSE.txt
├── README.md
├── lib
│   └── simplegem.rb
├── simplegem.gemspec
└── test
    ├── simplegem_test.rb
    └── thing_test.rb

2 directories, 6 files

如果我的Gem::Specification看起来像:

$LOAD_PATH.unshift 'lib'
require 'simplegem'

Gem::Specification.new do |s|
  s.name        = 'simplegem'
  s.version     = Simplegem::VERSION
  s.licenses    = ['MIT']
  s.summary     = 'This is a simple gem!'
  s.description = 'Much longer explanation of the simple gem!'
  s.authors     = ['...']
  s.email       = '...'
  s.files       = %w(simplegem.gemspec
                     LICENSE.txt
                     README.md
                     lib/simplegem.rb)
  s.homepage    = 'https://github.com/mbigras'
end

或者:

$LOAD_PATH.unshift 'lib'
require 'simplegem'

Gem::Specification.new do |s|
  s.name        = 'simplegem'
  s.version     = Simplegem::VERSION
  s.licenses    = ['MIT']
  s.summary     = 'This is a simple gem!'
  s.description = 'Much longer explanation of the simple gem!'
  s.authors     = ['...']
  s.email       = '...'
  s.files       = %w(LICENSE.txt
                     README.md
                     lib/simplegem.rb)
  s.homepage    = 'https://github.com/mbigras'
end

请注意第一个如何包含simplegem.gemspecs.files数组中,而第二个不包含。

  • Gemspec 是否应该与 Ruby Gem 一起打包?
  • 为什么或者为什么不?
4

1 回答 1

2

没有必要将 Gemspec 与 Ruby gem 打包在一起,在对安装在我的一个 gem 主页中的 gem 进行调查时,我注意到实际上大多数 gem 不包含 gemspec 文件:

 ~/.rvm/gems/ruby-2.3.7/gems $ find . -name \*.gemspec | wc -l
      95
 ~/.rvm/gems/ruby-2.3.7@happy-backend/gems $ ls | wc -l
     318

你为什么不想打包呢?

  • 它在您的 GEM 中节省了几个字节

为什么要打包?

  • 它允许轻松打开和重新包装宝石
  • 为什么不?无论如何,gem 规范都会上传到 gem 服务器,所以那里没有秘密,如果“用户”真的想要它,它就会在$GEM_HOME/specifications文件夹中
于 2018-04-24T01:52:36.060 回答