我希望在我的gem的bin目录中放置一个shell脚本,以及属于该包的其他Ruby程序.我希望将这个shell脚本原样安装在bin目录中(即没有包装器).这可能与Ruby宝石有关吗?如果没有其他可能,我会很满意安装后挂钩.有人有这方面的经验吗?
此问题在此处描述:https: //github.com/rubygems/rubygems/issues/88
如果您正在开发的宝石仅供您自己使用,您只需安装即可
gem install --no-wrapper my_gem
Run Code Online (Sandbox Code Playgroud)
我认为你最好写一个运行你的bash脚本的ruby脚本.这是一个如何做到这一点的例子:
斌/ test_gem
#!/usr/bin/env ruby
bin_dir = File.expand_path(File.dirname(__FILE__))
shell_script_path = File.join(bin_dir, 'test_gem.sh')
`#{shell_script_path}`
Run Code Online (Sandbox Code Playgroud)
斌/ test_gem.sh
#!/bin/sh
echo "Hello World!"
Run Code Online (Sandbox Code Playgroud)
test_gem.gemspec
spec.files = [
# ...
'bin/test_gem', 'bin/test_gem.sh'
]
# ...
spec.executables = ['test_gem']
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记将文件bin夹中的两个文件都设置为可执行文件!
请注意,虽然test_gem.sh使用filesRubygems命令注册,但它未注册为executables:它将仅放置在已安装的gem的目录中,但不会被包装/填充.
如果你安装了gem(并在必要时运行rbenv rehash),调用test_gem将导致ruby脚本执行你的shell脚本.
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |