Ruby Gem .gem 在 'gem build' 之后为空
Ruby Gem .gem is empty after 'gem build'
我使用 Swagger CodeGen 为 API 生成了 Ruby 客户端。生成的 .gemspec 文件如下所示:
# -*- encoding: utf-8 -*-
#
=begin
#convertapi
#Convert API lets you effortlessly convert file formats and types.
OpenAPI spec version: v1
Generated by: https://github.com/swagger-api/swagger-codegen.git
Swagger Codegen version: unset
=end
$:.push File.expand_path("../lib", __FILE__)
require "cloudmersiveConvertApiClient/version"
Gem::Specification.new do |s|
s.name = "cloudmersiveConvertApiClient"
s.version = CloudmersiveConvertApiClient::VERSION
s.platform = Gem::Platform::RUBY
s.authors = ["Cloudmersive"]
s.email = [""]
s.homepage = "https://www.cloudmersive.com/convert-api"
s.summary = "Convert API lets you effortlessly convert file formats and types."
s.description = "Convert files and content between file formats. Convert data between file formats. Instantly."
s.license = "Apache 2.0"
s.required_ruby_version = ">= 1.9"
s.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
s.add_runtime_dependency 'json', '~> 2.1', '>= 2.1.0'
s.add_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'
s.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.1'
s.add_development_dependency 'webmock', '~> 1.24', '>= 1.24.3'
s.add_development_dependency 'autotest', '~> 4.4', '>= 4.4.6'
s.add_development_dependency 'autotest-rails-pure', '~> 4.1', '>= 4.1.2'
s.add_development_dependency 'autotest-growl', '~> 0.2', '>= 0.2.16'
s.add_development_dependency 'autotest-fsevent', '~> 0.2', '>= 0.2.12'
s.files = `find *`.split("\n").uniq.sort.select{|f| !f.empty? }
s.test_files = `find spec/*`.split("\n")
s.executables = []
s.require_paths = ["lib"]
end
目录结构如下所示:
但是,当我构建它时,它会生成一个非常小的 .gem 文件。如果我然后安装那个 gem 然后我去查看安装它的文件夹,文件夹是空的 - 里面没有任何东西。
知道为什么会这样吗? Ruby 的新手,非常感谢您提供的任何指导。
在 Windows 操作系统上,以下两行显然不起作用:
s.files = `find *`.split("\n").uniq.sort.select{|f| !f.empty? }
s.test_files = `find spec/*`.split("\n")
它们用于从当前目录结构中生成文件数组(源和测试)。两者都调用系统来执行 find
命令,该命令不太可能恰好存在于 Windows 中。要解决这个问题(因为你的 gem
相对较小)只需手动列出所有文件,或使用 Dir#[]
或使用任何 unix 构建 gem
。类似的东西应该可以工作(未测试):
s.files = Dir['./**/*'] # .select { |f| ... } # condition to include file
作为已接受答案的附加组件,典型的方法是将您的文件列表与提交的 git
文件同步。这就是 Bundler 生成规范文件相关部分的方式:
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
end
这显然很方便,因为它可以很容易地通过 .gitignore
等进行控制。如果不使用 git
或者如果您出于某种奇怪的原因没有安装它,请忽略它。
我使用 Swagger CodeGen 为 API 生成了 Ruby 客户端。生成的 .gemspec 文件如下所示:
# -*- encoding: utf-8 -*-
#
=begin
#convertapi
#Convert API lets you effortlessly convert file formats and types.
OpenAPI spec version: v1
Generated by: https://github.com/swagger-api/swagger-codegen.git
Swagger Codegen version: unset
=end
$:.push File.expand_path("../lib", __FILE__)
require "cloudmersiveConvertApiClient/version"
Gem::Specification.new do |s|
s.name = "cloudmersiveConvertApiClient"
s.version = CloudmersiveConvertApiClient::VERSION
s.platform = Gem::Platform::RUBY
s.authors = ["Cloudmersive"]
s.email = [""]
s.homepage = "https://www.cloudmersive.com/convert-api"
s.summary = "Convert API lets you effortlessly convert file formats and types."
s.description = "Convert files and content between file formats. Convert data between file formats. Instantly."
s.license = "Apache 2.0"
s.required_ruby_version = ">= 1.9"
s.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
s.add_runtime_dependency 'json', '~> 2.1', '>= 2.1.0'
s.add_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'
s.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.1'
s.add_development_dependency 'webmock', '~> 1.24', '>= 1.24.3'
s.add_development_dependency 'autotest', '~> 4.4', '>= 4.4.6'
s.add_development_dependency 'autotest-rails-pure', '~> 4.1', '>= 4.1.2'
s.add_development_dependency 'autotest-growl', '~> 0.2', '>= 0.2.16'
s.add_development_dependency 'autotest-fsevent', '~> 0.2', '>= 0.2.12'
s.files = `find *`.split("\n").uniq.sort.select{|f| !f.empty? }
s.test_files = `find spec/*`.split("\n")
s.executables = []
s.require_paths = ["lib"]
end
目录结构如下所示:
但是,当我构建它时,它会生成一个非常小的 .gem 文件。如果我然后安装那个 gem 然后我去查看安装它的文件夹,文件夹是空的 - 里面没有任何东西。
知道为什么会这样吗? Ruby 的新手,非常感谢您提供的任何指导。
在 Windows 操作系统上,以下两行显然不起作用:
s.files = `find *`.split("\n").uniq.sort.select{|f| !f.empty? }
s.test_files = `find spec/*`.split("\n")
它们用于从当前目录结构中生成文件数组(源和测试)。两者都调用系统来执行 find
命令,该命令不太可能恰好存在于 Windows 中。要解决这个问题(因为你的 gem
相对较小)只需手动列出所有文件,或使用 Dir#[]
或使用任何 unix 构建 gem
。类似的东西应该可以工作(未测试):
s.files = Dir['./**/*'] # .select { |f| ... } # condition to include file
作为已接受答案的附加组件,典型的方法是将您的文件列表与提交的 git
文件同步。这就是 Bundler 生成规范文件相关部分的方式:
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
end
这显然很方便,因为它可以很容易地通过 .gitignore
等进行控制。如果不使用 git
或者如果您出于某种奇怪的原因没有安装它,请忽略它。