【问题标题】:How do I incorporate an independently maintained ruby script into a rails application如何将独立维护的 ruby​​ 脚本合并到 Rails 应用程序中
【发布时间】:2013-01-05 19:55:23
【问题描述】:

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

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

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

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

我要把它变成宝石吗?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby plugins gem


    【解决方案1】:

    使其成为 gem 并安装它是一种选择。否则,将文件的目录注册为加载路径。那部分可能取决于操作系统。例如,使用 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
    

    【讨论】:

    • 非常有帮助,谢谢。我将尝试将远程 repo 注册到我的 heroku 服务器,以查看它与 gem 之间的区别......谢谢。
    【解决方案2】:

    我们一直在编写基于 Ruby 的小型命令行工具,并将它们视为常规的 Linux 应用程序。使用反引号或%x 调用它们很简单,或者像使用常规应用程序一样使用常规管道 (|) 链接它们。

    如果我们要抛出大量数据,我们通常会使用 OptionParser 添加一个 --json 标志,它允许我们将 JSON 发送到调用程序,从而更容易重用数据而不是让解析 CSV 或列数据。

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

    仅仅因为它们是用 Ruby 编写的,并不意味着它们必须是 gem 或模块。 Ruby 的功能远不止这些,并且非常适合通常的宿主生态。

    【讨论】:

    • 这听起来很适合本地使用,要将其绑定到 Rails 应用程序,我会设置一个 ENV[] 对脚本远程仓库的引用?谢谢!
    • 你可以这样做。或者,将其路径放在 Rails 应用所属用户的 PATH 变量中,或者在调用时显式指向它。
    猜你喜欢
    • 2013-04-24
    • 2018-07-21
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多