我在Windows上写了一个名为“getDartPortalAndInitBuild”的gem,以从我们的神器中获取一些依赖项。当我进行rake安装时,宝石在窗户上工作得很漂亮。我使用geminabox将它上传到我们的gem存储库,工作正常。
然后我以root身份将它安装在我们的linux盒子上
gem install getDartPortalAndInitBuild
安装似乎正常。当我输入getDartPortalAndInitBuild时,它会显示“找不到命令”。我找到了gem的安装位置,并注意到bin文件夹(包含可执行文件的文件夹)丢失了。我做了一个,并再次创建了可执行文件。我chmodded该文件,并试图执行它。同样的问题。我检查了我的/ usr / bin文件夹,并且没有getDartPortalAndInitBuild。我试图在gem上进行rake安装但是,它仍然没有添加可执行文件。最后,我变得沮丧,并将可执行文件复制到bin中。那确实执行了文件,但我得到了`require':没有这样的文件要加载 - getDartPortalAndInitBuild。
这是我的宝石环境:
这是我的$ 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'
如何让我的宝石正确安装?我的道路似乎是正确的,而且一切都在Windows上运行良好。提前感谢您的帮助,请询问我是否提供了足够的信息。
更新:
值得注意的是,除非我进行rake安装,否则可执行文件在Windows上也不起作用。
答案 0 :(得分:0)
我替换了
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
与
spec.executables = ["getDartPortalAndInitBuild"]
现在它起作用了。我不确定为什么rake安装工作正常,但确实如此。