我有一个 ruby 脚本 (.rb),它打开一个文件并在一些解析后生成一个 csv 文件。
我独立维护脚本,并可能在其他应用程序中使用。
现在我只是将代码复制并粘贴到我的控制器中......我知道这是不对的!
我应该如何将此 ruby 脚本合并到我的应用程序中?
我把它变成宝石吗?
谢谢。
我有一个 ruby 脚本 (.rb),它打开一个文件并在一些解析后生成一个 csv 文件。
我独立维护脚本,并可能在其他应用程序中使用。
现在我只是将代码复制并粘贴到我的控制器中......我知道这是不对的!
我应该如何将此 ruby 脚本合并到我的应用程序中?
我把它变成宝石吗?
谢谢。
使其成为宝石并安装它是一种选择。否则,将文件的目录注册为加载路径。那部分可能取决于操作系统。例如,对于 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
我们一直在编写基于 Ruby 的小型命令行工具,并将它们视为常规的 Linux 应用程序。使用反引号或 调用它们是微不足道的,或者像我们使用常规应用程序一样%x
使用常规管道 ( ) 链接它们。|
如果我们要抛出大量数据,通常我们会--json
使用 OptionParser 添加一个标志,它允许我们将 JSON 发送到调用程序,从而更容易重用数据,而不必解析 CSV 或柱状数据.
您可以在/usr/local/bin
*nix 系统上安装这类应用程序,确保路径设置为在那里搜索,然后在 shell、Ruby 或任何其他能够使用子 shell 的语言之间共享代码。
仅仅因为它们是用 Ruby 编写的,并不意味着它们必须是 gem 或模块。Ruby 的功能远不止这些,并且非常适合通常的宿主生态。