如何将独立维护的ruby脚本合并到rails应用程序中

时间:2013-01-05 19:55:24

标签: ruby-on-rails ruby plugins gem

我有一个ruby脚本(.rb),可以在解析之后打开一个文件并生成一个csv文件。

我独立维护脚本,可以在其他应用程序中使用。

现在我只是将代码复制并粘贴到我的控制器中......我知道这不对!

我应该如何将这个ruby脚本合并到我的应用程序中?

我能把它变成宝石吗?

感谢。

2 个答案:

答案 0 :(得分:1)

将它作为宝石并安装它是一种选择。否则,将文件的目录注册为加载路径。该部分可能取决于操作系统。例如,使用Ubuntu Linux,我在终端中执行:

export RUBYLIB=path_to_the_directory_where_the_file_is

然后,require该文件并使用它。如果您希望库的行为不同,具体取决于它是直接从命令还是从另一个ruby脚本调用,通常的方法是在库中写入:

if __FILE__ == $0
  commands_to_execute_when_called_directly_from_command
end

答案 1 :(得分:1)

我们一直在编写基于Ruby的小型命令行工具,并将它们视为常规Linux应用程序。使用后退标记或%x来调用它们,或者使用常规管道(|)将它们链接起来就像普通应用程序一样简单。

如果我们要抛出大量数据,通常我们会使用OptionParser添加--json标志,这样我们就可以向调用程序发出JSON,从而更容易重用数据必须解析CSV或列数据。

您可以在{nix系统上的/usr/local/bin中安装这些类型的应用程序,确保将路径设置为在那里搜索,然后在shell,Ruby或任何其他能够使用sub的语言之间共享代码-shell。

仅仅因为它们是用Ruby编写的并不意味着它们必须是宝石或模块。 Ruby能够提供更多功能,并且能够很好地适应常见的宿主生态。