从ruby脚本安装gem并在之后使用它

时间:2017-11-02 16:06:50

标签: ruby bash rubygems geminabox

我有一个由Geminabox运行的私有gemserver。要在那里发布任何gem,都有一个命令gem inabox my-gem.gem -g $HOST

我正在编写一个自动发布新gem版本的脚本。

所以我有类似的东西:

`gem install geminabox --no-ri --no-rdoc`
`gem inabox my-super-gem.gem`

问题是它返回以下内容:

Successfully installed reentrant_flock-0.1.0
Successfully installed multipart-post-2.0.0
Successfully installed faraday-0.13.1
Successfully installed nesty-1.0.2
Successfully installed httpclient-2.8.3
Successfully installed builder-3.2.3
Successfully installed mustermann-1.0.1
Successfully installed rack-2.0.3
Successfully installed rack-protection-2.0.0
Successfully installed tilt-2.0.8
Successfully installed sinatra-2.0.0
Successfully installed geminabox-0.13.9
12 gems installed
ERROR:  While executing gem ... (Gem::CommandLineError)
    Unknown command inabox

当我在控制台中手动执行相同操作时,一切正常。如果我将这些命令放入.sh脚本中,也是如此:

#!/bin/bash
set -e
gem install geminabox --no-ri --no-rdoc
gem inabox -g $RUBYGEMS_HOST my-awesome.gem

但是,再次,如果我从ruby调用此脚本,它将无法使用相同的错误(Unknown command inabox):

system('script/upload_gem.sh')

我需要完全使用Ruby中的脚本。任何想法为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

毕竟,我解决了挖掘gemianbox gem的问题 - 似乎它通过一个简单的POST请求上传gem,所以gem inabox命令根本不需要,上传可以通过简单的CURL命令:

curl -F 'file=@/some/file.gem' https://some.host/upload