【发布时间】: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 类路径的工作原理。
-
这是一个操作系统问题,而不是 Ruby。该文件必须位于可执行路径中才能执行您想要的操作。
标签: ruby command-line ubuntu-14.04 executable