Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

246
Visualizações
¿Cómo obtener una lista seleccionada de problemas de GitHub en octocat con Ruby?

Básicamente, estoy usando octokit tratando de agregar un conjunto particular de problemas de GitHub, según su número de problema, a una lista de problemas.

El resumen del código es similar a este:

 require 'octokit' client = Octokit::Client.new(access_token: ENV['GITHUB_OAUTH_TOKEN'], accept: 'application/vnd.github.v3+json') REPO = 'USERNAME/SOME-GH-REPO'.freeze #client.issue(REPO, 1) # Returns {} #client.issues(REPO, :state => 'all') # Returns [{}] def pull_source_issues @client.auto_paginate = true ilist =[1,2,3] my_array = [] ilist.each do |i| puts "Adding issue [#]: #{i} \t from: #{REPO}\n" my_array.push(@client.issue(REPO , "#{i}", :state => 'all')) # works #@issues.push(@client.issue(REPO , "#{i}", :state => 'all')) # fails! end @issues = my_array puts "Found #{issues.size} issues." end

Pero parece que tengo que usar el intermedio my_array , ya que falla inmediatamente al ingresar a la matriz @issues .

Retirarse

De esta manera también parece muy ineficiente, ya que parezco hacer una solicitud para cada elemento, en lugar de buscarlos todos al mismo tiempo y luego seleccionar los que se necesitan. Además, también selecciona solicitudes de extracción , lo que no se desea. (*Porque las relaciones públicas también son problemas en GH).

A menudo veo el iterador con este aspecto:

 @issues = @client.issues(@source_repo, :state => 'all') @issues.each do |source_issue| print "Processing issue: #{source_issue.number} (#{n}/#{issues.size})\r" if !source_issue.key?(:pull_request) || source_issue.pull_request.empty? # Add each issue to (new?) @issues here end end

Pero tampoco puedo hacer que funcione.


¿Cómo puedo insertar () cada problema en la matriz @issues inmediatamente?
(¿Y cómo puedo hacerlo de manera más eficiente?)

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La inserción de elementos en la matriz @issues fallará porque no está inicializada ( @issues = [] ).

Después de echar un vistazo a la documentación de octokit tienes 2 posibilidades. Desafortunadamente, no puede consultar varios problemas por sus números con una sola solicitud.

Puedes hacer:

 @issues = [1,2,3].map{ |issue_number| client.issue(REPO, issue_number, state: 'all') } .reject(&:pull_request)

o:

 @issues = client.issues(REPO).select{ |issue| [1,2,3].include?(issue.number) } .reject(&:pull_request)

Realmente depende de la cantidad de problemas en el repositorio y la cantidad de números de problemas que desea consultar. Si realmente solo está consultando 3 números de problemas, iría con el primer enfoque. De lo contrario, me quedaría con lo último.

Cuando se trabaja con operaciones costosas (como hacer llamadas a una API) también es útil crear un enumerador perezoso:

 [1,2,3].lazy.map{ |issue_number| client.issue(REPO, issue_number, state: 'all') }

Esto evitará que la matriz se construya de inmediato y si solo desea los primeros n elementos, los problemas restantes no se eliminarán.

También tenga en cuenta que al usar el último enfoque, deberá pasar por las diferentes páginas o deshabilitar la paginación.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda