【发布时间】:2014-11-16 15:41:17
【问题描述】:
我正在用 ruby 编写一个命令行应用程序,并希望在我的 shell 中全局运行它,而不必在我的调用前加上 ./ 或 ruby <filepath> - 就像我会运行 git、@987654324 @ 或rails。
我的简单应用程序的结构如下:我在/Developer 文件夹中有一个名为rubyPlug 的目录。 rubyPlug 内部是 plug 和 Formulae.rb。
我正在用 ruby 编写一个命令行应用程序,并希望在我的 shell 中全局运行它,而不必在我的调用前加上 ./ 或 ruby <filepath> - 就像我会运行 git、@987654331 @ 或rails。
我的简单应用程序的结构如下:我在/Developer 中有一个名为rubyPlug 的目录。 rubyPlug 内部是 plug 和 Formulae.rb。 Formulae.rb 是所有应用程序特定代码的存储位置。 Plug 存储了一些样板启动代码:
!/usr/bin/env ruby
require "/Users/theideasmith/Developer/rubyPlug/Formulae.rb"
begin
x = Application.new ARGV
rescue Errno::ENOENT => err
abort "plug: #{err.message}"
end```
我想通过输入 plug <args> 来运行我的应用程序。如果我在全局范围内存储plug,我将如何构建我的require() 调用?
我已将#!/usr/bin/env ruby 包含在plug 中,运行chmod +x plug,并尝试sudo cp plug /usr/bin/plug. 我的脚本运行,但在require "/Users/.../Formulae.rb" 调用中失败。我该如何避免这种情况 - 我是否必须将父目录作为某种包存储在 /usr/bin 中?我已将#!/usr/bin/env ruby 包含在plug 中,运行chmod +x plug,并尝试sudo cp plug /usr/local/bin/plug。然后我可以输入plug <args>,但随后我收到一条与我的require 呼叫不起作用有关的错误消息。
有什么建议吗?
【问题讨论】:
-
为什么你的路径没有前导斜杠?这是 Mac OS 的事情吗?
标签: ruby command-line global