【问题标题】:Is it possible to call Git or other command line tools from inside a Thor script?是否可以从 Thor 脚本中调用 Git 或其他命令行工具?
【发布时间】:2011-01-26 06:33:02
【问题描述】:

我发现我经常在为 Rails 3 应用程序进行 git 提交之前和之后运行一系列例行“清理”任务。

我正在考虑将这些东西放入 Thor 脚本中,但我无法弄清楚的一件事是如何使用 Thor(或 Rake)调用系统上的其他工具。

是否可以从 Thor 或 Rake 脚本中调用像 git log 这样的命令,如果可以,那是什么样的?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby git rake thor


    【解决方案1】:

    只是掏空:

    result = %x(git log)
    puts result
    

    system('git log')
    

    如果您只想将输出传递到终端。

    还有将 Git 工具抽象为 Ruby 库的 grit gem:

    require 'grit'
    repo = Grit::Repo.new("/path/to/repo")
    repo.commits.each do |commit|
      puts "#{commit.id}: #{commit.message}"
    end
    

    【讨论】:

    • 啊哈!谢谢。 “shell out”可能是我在谷歌搜索中缺少的关键字:)
    • 嗯,我使用 %x、系统和反引号返回 nil。有什么我想念的吗?我需要 cd 到正确的目录吗?
    • @Jorge 您需要在项目目录中或以下(带有.git 目录的目录)并且git 命令必须在路径中(即您必须确保您的脚本可以实际找到git)。
    • 应该注意的是,Grit 目前不能在 Windows 上运行,因为它的一个依赖项在平台上不受支持。 github.com/rtomayko/posix-spawn/issues/9
    【解决方案2】:

    不要忘记那些只是 Ruby 文件,所以你也可以使用 Ruby 库中的所有内容,比如 %x[rm -rf /], system("rm -rf /")并且 `rm -rf /` 也可以在这些脚本中访问。

    【讨论】:

      猜你喜欢
      • 2019-08-19
      • 1970-01-01
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多