用Ruby gem部署一个shell脚本并安装在bin目录中[英] Deploy a shell script with Ruby gem and install in bin directory

本文是小编为大家收集整理的关于用Ruby gem部署一个shell脚本并安装在bin目录中的处理方法,想解了用Ruby gem部署一个shell脚本并安装在bin目录中的问题怎么解决?用Ruby gem部署一个shell脚本并安装在bin目录中问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我希望在我的 gem 的 bin 目录中放置一个 shell 脚本,以及属于该包的其他 Ruby 程序.我希望将这个 shell 脚本按原样安装在 bin 目录中(即没有包装器).Ruby gem 有可能吗?如果不可能的话,我会对安装后的钩子感到满意.有人有这方面的经验吗?

推荐答案

这里描述了这个问题:https://github.com/rubygems/rubygems/issues/88

如果您正在开发的 gem 仅供您自己使用,您可以简单地安装它

gem install --no-wrapper my_gem

我认为您最好编写一个运行 bash 脚本的 ruby​​ 脚本.这是一个关于如何做到这一点的示例:

<小时>

bin/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}`
<小时>

bin/test_gem.sh

#!/bin/sh

echo "Hello World!"
<小时>

test_gem.gemspec

spec.files = [
  # ...
  'bin/test_gem', 'bin/test_gem.sh'
]

# ...

spec.executables = ['test_gem']
<小时>

注意:不要忘记将 bin 文件夹中的两个文件都设置为可执行文件!

请注意,虽然 test_gem.sh 是使用 files Rubygems 命令注册的,但它并未注册为 executables:它只会放置在已安装 gem 的目录中,但不会被包装/填充.

如果你安装了你的 gem(必要时运行 rbenv rehash),调用 test_gem 将导致 ruby​​ 脚本执行你的 shell 脚本.

本文地址:https://www.itbaoku.cn/post/786550.html