0

我在 Windows 上编写了一个名为“getDartPortalAndInitBuild”的 gem,以从我们的工件中获取一些依赖项。当我进行 rake 安装时,gem 在 Windows 上运行良好。我使用 geminabox 将它上传到我们的 gem 存储库,效果很好。

然后我以 root 身份将它安装在我们的 linux 机器上

gem install getDartPortalAndInitBuild

安装似乎工作正常。当我键入 getDartPortalAndInitBuild 时,它显示“找不到命令”。我找到了 gem 的安装位置,并注意到 bin 文件夹(包含可执行文件的文件夹)丢失了。我做了一个,还再次创建了可执行文件。我修改了文件,并尝试执行它。同样的问题。我检查了我的 /usr/bin 文件夹,但 getDartPortalAndInitBuild 不存在。我尝试在 gem 上进行 rake 安装,但它仍然没有添加可执行文件。最后,我变得沮丧,并将可执行文件复制到 bin 中。那确实执行了该文件,但我得到了 `require': no such file to load -- getDartPortalAndInitBuild。

这是我的宝石环境:

  • 红宝石版本:1.3.7
  • 红宝石版本:1.8.7(2011-06-30 补丁级别 352)[x86_64-linux]
  • 安装目录:/usr/lib/ruby/gems/1.8
  • 红宝石可执行文件:/usr/bin/ruby
  • 可执行目录:/usr/bin
  • 红宝石平台:
    • 红宝石
    • x86_64-linux
  • 宝石路径:
    • /usr/lib/ruby/gems/1.8
    • /root/.gem/ruby/1.8
  • 宝石配置:
    • :update_sources => 真
    • :详细 => 真
    • :基准 => 假
    • :回溯 => 假
    • :bulk_threshold => 1000

这是我的 $PATH

/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/ruby/gems/1.8:/root/.gem/ruby/1.8:/usr/lib/ruby/gems/1.8/bin:/root/.gem/ruby/1.8/bin:/usr/bin/ruby

这是完整的 gemspec

# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'getDartPortalAndInitBuild/version'

Gem::Specification.new do |spec|
  spec.name          = "getDartPortalAndInitBuild"
  spec.version       = GetDartPortalAndInitBuild::VERSION
  spec.authors       = ["Tyler MacMillan"]
  spec.email         = ["tyler.macmillan@recondotech.com"]
  spec.description   = "Gets risvc, dartsvc, entrypoint, rcp, dataadmin, and user management and initializes the install script"
  spec.summary       = "Grab wars and build portal for iAT server"
  spec.homepage      = ""
  spec.license       = "MIT"

  spec.files         = `git ls-files`.lines.map { |s| s.chomp }
  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.3"
  spec.add_development_dependency "rake"
end

这是我的可执行文件的相关部分(名称为 getDartPortalAndInitBuild):

#!/usr/bin/env ruby

require 'getDartPortalAndInitBuild'

如何让我的 gem 正确安装?我的路径似乎是正确的,而且在 Windows 上一切正常。提前感谢您的帮助,如果我没有提供足够的信息,请询问。

更新:

值得注意的是,除非我进行 rake 安装,否则可执行文件也不能在 Windows 上运行。

4

1 回答 1

0

我换了

spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }

spec.executables = ["getDartPortalAndInitBuild"]

现在它起作用了。我不确定为什么 rake 安装工作正常,但确实如此。

于 2013-08-05T18:06:33.147 回答