我读到我们不应该用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::规格应该如下所示:
$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
请注意,第一个数组如何在s.files
数组中包含simplegem.gemspec
,而第二个数组不包含。
- Gemspec 应该与 Ruby Gem 一起包装吗?
- 为什么或为什么不呢?
没有必要将 Gemspec 与红宝石一起打包,在对安装在我的一个宝石家中的宝石进行调查时,我注意到实际上大多数宝石都不包含 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
文件夹中