Ruby需要来自github的代码片段

时间:2011-11-30 09:21:45

标签: ruby

有没有得到Ruby的require语句从github而不仅仅是本地文件系统下载文件?

更新:对不起我应该让问题更清楚。我想下载一个包含Ruby模块的文件并将其导入我的脚本,而不是仅仅在我的脚本中下载图像或其他任意文件。

换句话说就像这样

require 'http:\\github.com\myrepo\snippet.rb'

puts 'hi'

3 个答案:

答案 0 :(得分:4)

默认情况下,这是不可能的。此外,出于安全原因,这不是一个好主意。

你有几种选择。如果要包含的文件是Gem和Git存储库,则可以使用Bundler下载并打包项目中的依赖项。然后,您就可以直接在源代码中require文件。

这是包含外部依赖关系的最佳和最安全的方法。

如果您信任源并且您确实知道自己在做什么,则可以使用Net :: HTTP(或任何其他HTTP库)下载文件,并直接在Ruby代码中评估主体。 您可以将所有内容打包到自定义require_remote函数中。

答案 1 :(得分:2)

你可以下载并评估它

require "open-uri"

alias :require_old :require

def require(path)
    return false if $".include?(path)
    unless path=~ /\Ahttp:\/\/
        return require_old(path)
    end
    eval(open(path).read)
    $"<< path
    true
end

请注意,此代码没有错误检查网络中断不存在的文件,....我也相信以这种方式要求库通常不是一个好主意,这种方法存在安全性和可靠性问题。但也许你有一个有效的用例。

答案 2 :(得分:0)

您可以在Gemfiles内添加远程宝石,然后在您运行bundle install时下载