ruby - 使用 Ruby gem 部署 shell 脚本并安装在 bin 目录中

标签 ruby gem installation

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

最佳答案

这里描述了这个问题: 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 脚本。

关于ruby - 使用 Ruby gem 部署 shell 脚本并安装在 bin 目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701726/

相关文章:

ruby-on-rails - 您如何管理共享代码和配置的多个 Rails 应用程序和服务?

ruby - 'gem install bundle' 出错

python - 如何使用pygame模块?

ruby-on-rails - 使用 Rails number_to_currency 在 <sup> 标签中围绕美分

ruby-on-rails - 自定义 rails 配置部分

ruby-on-rails - 正确的 Rails 模型命名空间

ruby - compass gem throw 错误

ruby-on-rails - 使用 ruby​​/rails geocoder gem 获取 request.location 附近的位置

linux - conda install -c anaconda 无法通过 anaconda 安装任何软件包

installation - INST :07545:Unexpected error. java.lang.NullPointerException