【问题标题】:simple command line Ruby application简单的命令行 Ruby 应用程序
【发布时间】:2016-07-20 15:59:20
【问题描述】:

我被要求开发一个简单的命令行 Ruby 应用程序,它使用指定的搜索查询从外部 API 检索结果。我创建了一个脚本来执行此操作,并使用#!/usr/bin/env ruby 使其可执行。我的脚本名称是 sampleapp.rb。所以我可以从控制台运行它

$> ./sampleapp some_argument

只有当我在文件目录中时。

在给我的示例中,脚本/应用程序应该像这样运行:

$> sampleapp some_argument

我做了很多研究,但找不到实现这一目标的方法。请在这里指导我。

另外,我怎样才能使这个示例应用程序全局化,以便可以从任何地方调用它。

更新:

sampleapp.rb

require 'net/https'
require 'openssl'
require 'json'
require 'uri'
require 'cgi'

module Someapp

  class SampleApp

    def search(query ="")
     ...some code here ...
    end

  if ARGV.size == 0 || ARGV[0].strip == ""
    puts "Please provide search query as an argument"
  else
    query = ARGV[0].strip
    SampleApp.new.search(query)
  end
end

【问题讨论】:

  • 假设某些 *nix 变体,您需要使其可执行 (chmod +x sampleapp),并使其位于您(或更一般地调用者)$PATH 中的目录中。正如已经给出的答案所暗示的那样,一种方法是将其放入/usr/local/bin
  • @DerrellDurrett 我怀疑你是否理解 ruby​​ 类路径的工作原理。
  • 有很多很棒的库,看看 thorslop 当范围蔓延导致“简单”突然变为“复杂”。
  • 这是一个操作系统问题,而不是 Ruby。该文件必须位于可执行路径中才能执行您想要的操作。

标签: ruby command-line ubuntu-14.04 executable


【解决方案1】:

如果此脚本不依赖任何 3rd 方库(不太可能)并且在系统 ruby 下运行顺利,最简单的方法是将其复制到 /usr/local/bin 文件夹:

sudo cp ./sampleapp /usr/local/bin/

如果它依赖于其他库,首选的方法是用它构建一个 gem,并使用系统 ruby 安装它。关于如何生成gemthe canonical one is likely this 的教程有很多。

【讨论】:

  • 我也创建了一个 gem,但我不确定如何将它作为控制台应用程序运行。我正在使用依赖项更新问题。
  • 阅读我链接的文章(“添加可执行文件”部分)中的如何创建可执行文件并将它们与 gem 一起提供。
  • 问题依然存在。如问题所述,我应该如何运送以及运送什么以便它在另一台机器上运行?
  • 一颗宝石。当 gem 安装在另一台机器上时,依赖关系将被解析,并且可执行文件将自动可供执行。 请阅读我链接的文章,而不是问问题,那里得到了完美的回答。
  • 不需要将文件复制到目录中,只要确保目录在PATH中即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
相关资源
最近更新 更多