11

我正在尝试使用名为jira-ruby 的gem 从 JIRA 获取问题。问题是,结果包含 70 个问题,但我只能看到前 50 个。直接使用 JIRA REST API 时,我可以将 maxResults 参数(在 JQL 之外)设置为更高的数字。但我在红宝石中找不到这种可能性。

是否有可能直接使用此 ruby​​ gem 或任何其他同样简单的解决方案设置 maxResults 标志?

代码如下:

require 'jira'

class PagesController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  def home

    options = {
        :username => 'xxx',
        :password => 'xxx',
        :site     => "https://xxx.atlassian.net",
        :context_path => '',
        :auth_type => :basic
    }

    client = JIRA::Client.new(options)
    @issues = 0
    client.Issue.jql("project = AA AND fixVersion = it11").each do |issue|
      @issues += 1 #  "#{@issues} <br> #{issue.id} - #{issue}"
    end

  end
end
4

1 回答 1

12

好的,终于发现问题出在哪里了。我使用的是 gem 的 0.1.10 版本(默认情况下通过 gem install 命令下载的那个),这个版本(可能)有这个问题 - 至少它不支持问题的 jql 方法中的 maxResults 参数。解决方案是通过将以下行添加到 Gemfile 从 git 下载 gem:

gem 'jira-ruby', :git => 'git://github.com/sumoheavy/jira-ruby.git'

然后我在代码中发现 jql 方法接受可以指定此参数的哈希,所以现在代码如下并且它正在工作:

require 'jira'

class PagesController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  def home

    p "processing..."
    options = {
        :username => 'xxx',
        :password => 'xxx',
        :site     => "https://xxx.atlassian.net",
        :context_path => '',
        :auth_type => :basic
    }

    client = JIRA::Client.new(options)


    query_options = {
        :fields => [],
        :start_at => 0,
        :max_results => 100000
    }

    @issues = ''

    client.Issue.jql('project = AA AND fixVersion = it11', query_options).each do |issue|
      @issues = "#{@issues} <br> #{issue}"
      #@issues.push(issue.id)
    end
    #@issues = @issues.length
  end
end

而且我还必须将 rails gem 更新到 4.1.4 版本。

于 2014-08-05T11:54:54.983 回答