Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从用户';s在ruby中的公共github回购_Ruby_Github - Fatal编程技术网

从用户';s在ruby中的公共github回购

从用户';s在ruby中的公共github回购,ruby,github,Ruby,Github,我想编写一个小ruby脚本来迭代用户的所有公共repo,并获得一个特定的文件(如果有的话)。这里有一个小代码片段,可以在文件存在的irb中运行,但是我得到了一个404,所以一定是出了什么问题,但我没有看到: require 'octokit' user = Octokit.user 'octokit' repos = user.rels[:repos].get.data > repos[3].name => "octokit.rb" Octokit.contents rep

我想编写一个小ruby脚本来迭代用户的所有公共repo,并获得一个特定的文件(如果有的话)。这里有一个小代码片段,可以在文件存在的irb中运行,但是我得到了一个404,所以一定是出了什么问题,但我没有看到:

require 'octokit'
user = Octokit.user 'octokit'
repos = user.rels[:repos].get.data

>   repos[3].name
 => "octokit.rb"

Octokit.contents repos[3], path:'Gemfile'

Octokit::NotFound: GET https://api.github.com/contents/Gemfile: 404 - Not Found // See: https://developer.github.com/v3

这个特定的repo()在根级别肯定有一个名为“Gemfile”的文件,但它仍然报告一个404。

这就是您要查找的

require 'octokit'
user = Octokit.user("octokit")
repos = user.rels[:repos].get.data
Octokit.contents repos[3].full_name, path:"Gemfile"
Octokit#contents
repo
接受以下对象类型:

Integer @id = repo
String @owner, @name = repo.split('/') #this is what I used with #full_name
Repository @owner = repo.owner;  @name = repo.name
Hash @name = repo[:repo] ||= repo[:name]; @owner = repo[:owner] ||= repo[:user] ||= repo[:username]
当您使用
get.data
时,实际上没有
存储库
您有一个
Sawyer::Resource
,它没有处理功能,因此当它生成您获得的url时,
/

可能有更好的方法,但这是调整特定代码的最简单方法

更新

使
repos
更易于访问您可以创建如下
Hash

repos = Hash[user.rels[:repos].get.data.map{|r| [r.name, Octokit::Repository.new(r.full_name)]}]
#=> {"go-octokit"=>octokit/go-octokit, "octokit.net"=>octokit/octokit.net, "octokit.objc"=>octokit/octokit.objc, "octokit.rb"=>octokit/octokit.rb}
Octokit.contents repos["octokit.rb"], path: "Gemfile"
我认为这会增加可读性,或者您可以使用monkey patch
Sawyer::Resource

class Sawyer::Resource
  def to_repo
    Octokit::Repositiory.new(self.full_name)
  end
end
repos = user.rels[:repos].get.data.map(&:to_repo) #this will return an array of `Octokit::Repository` Objects
Octokit.contents repos[3], path:'Gemfile'

这就是你要找的

require 'octokit'
user = Octokit.user("octokit")
repos = user.rels[:repos].get.data
Octokit.contents repos[3].full_name, path:"Gemfile"
Octokit#contents
repo
接受以下对象类型:

Integer @id = repo
String @owner, @name = repo.split('/') #this is what I used with #full_name
Repository @owner = repo.owner;  @name = repo.name
Hash @name = repo[:repo] ||= repo[:name]; @owner = repo[:owner] ||= repo[:user] ||= repo[:username]
当您使用
get.data
时,实际上没有
存储库
您有一个
Sawyer::Resource
,它没有处理功能,因此当它生成您获得的url时,
/

可能有更好的方法,但这是调整特定代码的最简单方法

更新

使
repos
更易于访问您可以创建如下
Hash

repos = Hash[user.rels[:repos].get.data.map{|r| [r.name, Octokit::Repository.new(r.full_name)]}]
#=> {"go-octokit"=>octokit/go-octokit, "octokit.net"=>octokit/octokit.net, "octokit.objc"=>octokit/octokit.objc, "octokit.rb"=>octokit/octokit.rb}
Octokit.contents repos["octokit.rb"], path: "Gemfile"
我认为这会增加可读性,或者您可以使用monkey patch
Sawyer::Resource

class Sawyer::Resource
  def to_repo
    Octokit::Repositiory.new(self.full_name)
  end
end
repos = user.rels[:repos].get.data.map(&:to_repo) #this will return an array of `Octokit::Repository` Objects
Octokit.contents repos[3], path:'Gemfile'

这就是你要找的

require 'octokit'
user = Octokit.user("octokit")
repos = user.rels[:repos].get.data
Octokit.contents repos[3].full_name, path:"Gemfile"
Octokit#contents
repo
接受以下对象类型:

Integer @id = repo
String @owner, @name = repo.split('/') #this is what I used with #full_name
Repository @owner = repo.owner;  @name = repo.name
Hash @name = repo[:repo] ||= repo[:name]; @owner = repo[:owner] ||= repo[:user] ||= repo[:username]
当您使用
get.data
时,实际上没有
存储库
您有一个
Sawyer::Resource
,它没有处理功能,因此当它生成您获得的url时,
/

可能有更好的方法,但这是调整特定代码的最简单方法

更新

使
repos
更易于访问您可以创建如下
Hash

repos = Hash[user.rels[:repos].get.data.map{|r| [r.name, Octokit::Repository.new(r.full_name)]}]
#=> {"go-octokit"=>octokit/go-octokit, "octokit.net"=>octokit/octokit.net, "octokit.objc"=>octokit/octokit.objc, "octokit.rb"=>octokit/octokit.rb}
Octokit.contents repos["octokit.rb"], path: "Gemfile"
我认为这会增加可读性,或者您可以使用monkey patch
Sawyer::Resource

class Sawyer::Resource
  def to_repo
    Octokit::Repositiory.new(self.full_name)
  end
end
repos = user.rels[:repos].get.data.map(&:to_repo) #this will return an array of `Octokit::Repository` Objects
Octokit.contents repos[3], path:'Gemfile'

这就是你要找的

require 'octokit'
user = Octokit.user("octokit")
repos = user.rels[:repos].get.data
Octokit.contents repos[3].full_name, path:"Gemfile"
Octokit#contents
repo
接受以下对象类型:

Integer @id = repo
String @owner, @name = repo.split('/') #this is what I used with #full_name
Repository @owner = repo.owner;  @name = repo.name
Hash @name = repo[:repo] ||= repo[:name]; @owner = repo[:owner] ||= repo[:user] ||= repo[:username]
当您使用
get.data
时,实际上没有
存储库
您有一个
Sawyer::Resource
,它没有处理功能,因此当它生成您获得的url时,
/

可能有更好的方法,但这是调整特定代码的最简单方法

更新

使
repos
更易于访问您可以创建如下
Hash

repos = Hash[user.rels[:repos].get.data.map{|r| [r.name, Octokit::Repository.new(r.full_name)]}]
#=> {"go-octokit"=>octokit/go-octokit, "octokit.net"=>octokit/octokit.net, "octokit.objc"=>octokit/octokit.objc, "octokit.rb"=>octokit/octokit.rb}
Octokit.contents repos["octokit.rb"], path: "Gemfile"
我认为这会增加可读性,或者您可以使用monkey patch
Sawyer::Resource

class Sawyer::Resource
  def to_repo
    Octokit::Repositiory.new(self.full_name)
  end
end
repos = user.rels[:repos].get.data.map(&:to_repo) #this will return an array of `Octokit::Repository` Objects
Octokit.contents repos[3], path:'Gemfile'

到该位置的正确路径是
https://api.github.com/repos/octokit/octokit.rb/contents/Gemfile
其中路径等于
https://api.github.com/repos/:owner/:repo/contents/:file_name
到该位置的正确路径是
https://api.github.com/repos/octokit/octokit.rb/contents/Gemfile
路径的位置等同于
https://api.github.com/repos/:owner/:repo/contents/:file_name
到该位置的正确路径是
https://api.github.com/repos/octokit/octokit.rb/contents/Gemfile
其中路径等于
https://api.github.com/repos/:owner/:repo/contents/:file_name
该位置的正确路径是
https://api.github.com/repos/octokit/octokit.rb/contents/Gemfile
其中路径等于
https://api.github.com/repos/:owner/:repo/contents/:file_name
工作正常。谢谢大家!@UltraSarus i更新了我的答案,并根据您的实现,提供了一些可能对您有用的其他内容。工作非常完美。谢谢大家!@UltraSarus i更新了我的答案,并根据您的实现,提供了一些可能对您有用的其他内容。工作非常完美。谢谢大家!@UltraSarus i更新了我的答案,并根据您的实现,提供了一些可能对您有用的其他内容。工作非常完美。谢谢大家!@UltraSarus i更新了我的答案,并提供了一些其他可能对您有用的东西,具体取决于您的实现。