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

2023-11-27

我希望将 shell 脚本与属于该包的其他 Ruby 程序一起放置在我的 gem 的 bin 目录中。我希望将此 shell 脚本按原样安装在 bin 目录中(即没有包装器)。红宝石有可能做到这一点吗?如果没有其他可能的话,我会对安装后挂钩感到满意。有人有这方面的经验吗?


此问题描述如下: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']

NOTE:不要忘记将这两个文件设置在bin文件夹为可执行文件!

请注意,虽然test_gem.sh已注册filesRubygems 命令,它没有注册为executables:它只会被放置在已安装的 gem 的目录中,但不会被包装/填充。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ruby gem 部署 shell 脚本并安装在 bin 目录中 的相关文章

  • 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么?

    我的工作要求我为某些测试自动生成电子邮件 我一直在四处寻找 但一直未能找到可以快速实施的合理解决方案 它需要在 Outlook 中 而不是其他邮件服务器中 因为我们有一些奇怪的身份验证规则 并且我们需要保存草稿的选项 而不仅仅是发送消息 显
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它
  • 如何在保存父对象时确保子对象有效?

    假设我有两堂课 class User attr accessible name has one address validates name presence gt true validates associated address end
  • Ruby:基于控制台的菜单

    我有一个名称和 URL 数组 并希望以向上 向下滚动菜单的形式向用户呈现名称列表 基本上是什么dialog允许在外壳内 我调查过ncurses ruby rdialog and HighLine但它们似乎要么作为一个项目被放弃 要么甚至从它
  • proc函数相对于方法有什么优点

    我正在解决一些问题欧拉计划 http projecteuler net 我提到我总是将短方法包装在 proc 函数中 我问自己 Why 答案是 我不知道 也许是因为它短 那么proc函数相对于普通方法除了短之外还有什么优点呢 Proc is
  • 使用brew时出现“错误的解释器”错误

    当我尝试运行任何 brew 命令时 出现此错误 Holger Sindbaeks MacBook Air holgersindbaek brew help bash usr local bin brew usr bin ruby bad i
  • 载波无法删除图像

    我现在使用 Carrierwave 上传图像 一切都很好 除了一个 当我添加用于删除上传图像的复选框时 我收到错误 无法批量分配受保护的属性 remove image Form Model class Manufacturer lt Act
  • Rails/heroku 从 gem 迁移到 toolbelt

    我曾经在一个项目中使用过 heroku gem 既然工具带已经出来了 我想换一个 我从 Gemfile 中删除了 gem 并通过 gem uninstall heroku 卸载了它 我使用heroku网站上的pkg安装了heroku工具带
  • Ruby:使用默认值定义类级别哈希

    我有一个基本的红宝石课程 class LogEntry end 我想做的是能够用几个值定义一个哈希 如下所示 EntryType error gt 0 warning gt 1 info gt 2 这样我就可以访问这样的值 或类似的值 Lo
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • 我可以从安装 Rails 引擎的真实应用程序运行它的规格吗?

    我有一个 Rails 引擎 旨在为我们的一个更大的项目提供一些模型和控制器 引擎有一套相当不错的规格 在引擎的虚拟应用程序中使用了一堆模拟和一些全尺寸模型和控制器 以确保引擎正在做它应该做的事情并与更大的应用程序一起工作 然而 即使所有测试
  • 开始使用 Ruby、Watir 和 Ruby Mine?

    我想对电子商务网站进行自动化测试 我安装了 Ruby Watir Gems 和 Ruby Mine 虽然我尝试过 RubyMine 但我不知道如何开始编写一个简单的脚本 如何开始使用 RubyMine 编写简单的脚本 我创建了一个项目 你下
  • 无法在 IE 上运行 Selenium 脚本

    我必须在 IE 10 浏览器上运行 Selenium 测试 为了运行以下脚本 我执行了以下操作 下载IEDriverServer 64位 因为我的机器是64位 here http code google com p selenium dow
  • Rails 中的 plusDomains.circles.addPeople 的 Google API 产生 403 Forbidden

    Using Google API Ruby 客户端 https github com google google api ruby client class GooglePlus def self follow contact contac
  • Ruby 解释器出现段错误后,是否可以从 corefile 中获取 Ruby 回溯?

    Note 我使用了在使用 libxml ruby gem 时遇到的段错误来说明问题 但我已经用所述 gem 解决了我的问题 这个问题真正涉及的是从 gdb 使用 corefile 查看 Ruby 回溯 即解释器在 Ruby 代码无法处理异常
  • 为什么对参数哈希进行切片会在批量分配时带来安全问题?

    通过批量分配来预防安全风险的官方方法是使用属性可访问 http api rubyonrails org classes ActiveModel MassAssignmentSecurity ClassMethods html 然而 一些程序
  • Mountain Lion 的 RVM 问题

    我可以在运行 Mountain Lion 的 Mac 上安装任何 Ruby 版本 我已经确保 Brew Doctor 一切正常 当我运行 ie rvm intall 1 9 3 head 时 我得到以下信息 From git github
  • 检查 Float 是否等于 Ruby 中的整数值

    假设我有以下代码 x 0 8 y 1 0 最好的检查方法是什么y相当于Integer 目前我正在做 y to int y 这可行 但我觉得应该有更好的方法 You mod值为 1 并检查该值是否等于 0 if y 1 0
  • 在 Mac 上使用“sudo gem install nokogiri”安装 nokogiri 时出错

    我试图安装 nokogiri 因为它是启动 Rails 所必需的 rails s usr local rvm gems ruby 1 9 3 p194 global gems bundler 1 1 5 lib bundler spec s

随机推荐

  • 有没有办法强制 ASP.NET Web API 返回纯文本?

    我需要从 ASP NET Web API 控制器获取纯文本响应 我尝试过提出请求Accept text plain但它似乎并没有达到目的 此外 该请求是外部的 不受我的控制 我要完成的是模仿旧的 ASP NET 方式 context Res
  • 从基类访问子类的静态成员

    我有以下基类 class BaseClass public static myFlag boolean false constructor reference ChildClass myFlag 与儿童班 class ChildClass
  • 当我在 Chrome 中单击“允许”时,为什么 getUserMedia 会抛出 [object NavigatorUserMediaError]?

    最近 我在尝试通过我的网站访问客户的麦克风时开始出现错误 当Chrome询问是否允许网站访问用户的麦克风时 object NavigatorUserMediaError 无论他们点击 允许 还是 拒绝 都会产生 无论麦克风是否实际插入计算机
  • 在Python中分割分号分隔的字符串

    我想分割一个以分号分隔的字符串 以便我可以使用 Python 存储每个单独的字符串 以用作 XML 标记之间的文本 字符串值如下所示 08 26 2009 08 27 2009 08 29 2009 它们只是存储为字符串值的日期 我想迭代每
  • iOS:带有按钮图像的导航栏

    我想创建一个导航栏 其中图像作为导航栏右侧的按钮 像下面的快照 我怎样才能实现这个目标 希望这可以帮助 viewController navigationItem titleView UIImageView alloc initWithIm
  • 如何在 Go 中获取文件的组 ID (GID)?

    os Stat 返回一个FileInfo对象 它有一个Sys 返回一个方法Interface 没有方法 虽然我有能力fmt Printf 它 看到 Gid 我无法以编程方式访问 Gid 我如何在这里检索文件的 Gid file info o
  • 用不同的颜色填充水平线上方和下方的区域[重复]

    这个问题在这里已经有答案了 Aim 我正在尝试填充 R 中 ggplot 生成的图中两条线之间的区域 我想用与水平线下方不同的颜色填充水平线上方的线之间的所有内容 我成功地用单一颜色填充了两条线之间的所有内容 但是 我无法用两种不同的颜色区
  • 通过 PHP 使用 R

    我对 R 比较陌生 对 Linux Ubuntu 命令行也很陌生 我正在尝试用 PHP 编写一个页面 其中包含我想在 R 中执行的命令 然后将结果传回以便能够使用它们 我尝试了下面代码的变体 但我只得到 R 欢迎消息作为我的输出 当我在命令
  • 完成后如何杀死 doMC 工作人员?

    doMC 的文档似乎非常稀疏 仅列出了 doMC package 和 registerDoMC 我遇到的问题是我将通过 doMC foreach 生成几个工作人员 但是当工作完成后 他们只是坐在那里占用内存 我可以去寻找他们的进程ID 但我
  • 如何配置 Play! 2.4.2 HTTPS 密钥库?

    我是 Play Framework 的新手 只是尝试在 Java 8 上首次使用 2 4 2 来使用 HTTPS 我可以让它使用默认密钥库 但不能使用我自己的密钥库 我配置了working默认密钥库位于build sbt javaOptio
  • Android 版 Google 地图 V2 上圆圈上的 LatLng 点

    I need to store all the LatLng points of circle drawn on google map like 我有圆和半径 以米为单位 如何得到那个 我尝试使用代码 private ArrayList
  • 重置数据表中的自动增量

    我填充一个DataSet with a DataAdapter to a SQL CE数据库 数据显示在DataGrid它绑定到 DataSet 的 DataTable 我有一个自动递增 ID 字段 或在 SQLCE 中 称为PRIMARY
  • UITableViewCells 中的图像加载错误

    我正在开发一个应用程序 我想在带有自定义单元格的 UITableView 中显示几乎与屏幕大小一样大的图像 图像加载良好 有点慢 但它们加载了 但是当我在 TableView 中滚动时 它们出现在错误的单元格中 例如 单元格 5 中的 Im
  • ASP.Net MVC 将标签值回发到您的控制器

    使用 EditorTemplate 时 如果我希望模型上的值显示在屏幕上 同时又发布回控制器 我应该使用什么助手 IE 如果我使用 TextBoxFor Html TextBoxFor model gt model RoomTypeName
  • 如何使用指针从不同的函数访问局部变量?

    我可以访问不同函数中的局部变量吗 如果是这样 怎么办 void replaceNumberAndPrint int array 3 printf i n array 1 printf i n array 1 int getArray int
  • Oct2Py 仅返回第一个输出参数

    我使用 Oct2Py 是为了在我的 Python 代码中使用一些 M 文件 假设我有这个简单的 Matlab 函数 function a b toto c a c b c 1 end 如果我在 Octave 中调用它 会发生什么显然是 gt
  • 当没有任何变化时如何强制更新 MySQL 记录

    我的数据库表有一列定义要使用ON UPDATE CURRENT TIMESTAMP 字段 last access 类型 时间戳 整理 属性 更新 CURRENT TIMESTAMP Null No 默认值 CURRENT TIMESTAMP
  • 如何使用 Python Mock 引发异常 - 但将 Errno 设置为给定值

    给定以下 Python 代码 elif request method DELETE try os remove full file return jsonify results purged s full file except OSErr
  • ES6 对象字面量中的简洁方法和非简洁方法

    let module add function a b return parseInt a parseInt b sub a b return parseInt a parseInt b 使用这两种方法的根本区别是什么concise方法语法
  • 使用 Ruby gem 部署 shell 脚本并安装在 bin 目录中

    我希望将 shell 脚本与属于该包的其他 Ruby 程序一起放置在我的 gem 的 bin 目录中 我希望将此 shell 脚本按原样安装在 bin 目录中 即没有包装器 红宝石有可能做到这一点吗 如果没有其他可能的话 我会对安装后挂钩感