4

很难从关于这个概念的各种搜索中获得任何有用的结果——可能是因为它是一个。错误和/或 b. 朦胧。不过,从本质上讲,我想编写一个应用程序,它既可以用作普通的 Web 应用程序,也可以用作命令行界面。在过去,我已经使用 Perl 为 sysadmin-y 的东西完成了这项工作,但这并没有使用 Ruby/Rails 带来的乐趣。

我对 Rails 本身很满意,并且还使用独立的 Ruby 来处理各种 CLI 内容。我正在寻找的是扩展 Rails 应用程序以具有 CLI 功能的最佳实践(如果存在)。

也许答案就像使用脚本/运行程序并在使用我的 Rails 模型时做我自己的“VC”一样简单......这就是我打算做的事情,但我想我会退后一步并首先检查该方法. 我很难想象我将如何利用 Rails 控制器的任何东西,因为它与 HTTP 请求如此紧密地结合在一起,但我经常对聪明的(呃)人们想出的东西感到惊讶。

感谢您提供任何有用的回复。

4

2 回答 2

1

我认为这完全取决于您是否要重用控制器逻辑。如果你这样做了,那么你可以编写一个 gem/Rake 任务/独立 Ruby 脚本,该脚本向应用程序发出 HTTP 请求并以 JSON/XML/纯文本或其他形式接收响应。HTTParty 之类的东西非常适合这种情况。

第二种选择正如您所描述的:直接从您自己的脚本驱动您的 Rails 模型并呈现结果。

于 2010-02-24T14:02:42.733 回答
0

另一种方法是 Web 界面向 CLI 发送任何内容。所有值得做的事情都在 CLI 中,而 Web 只需调用 CLI 即可满足其所有需求。

脱壳有点贵。如果事实证明这会损害性能,请使用 popen 在每个 Web 会话中仅加载一次 CLI。然后,您可以向它提供命令(通过 popen 管道写入其标准输入)并获取结果(通过 popen 管道从其标准输出读取),而无需为每个命令加载 CLI。如果 CLI 是“我接受一些参数,做某事,然后退出”的排序,然后向它添加一个新模式“--stay-resident”或类似的,将其切换到 Web 界面需要的行为.

于 2010-02-24T14:37:33.150 回答