使用Jira-Ruby gem(REST API)更新Jira自定义字段不起作用

时间:2013-07-15 13:07:02

标签: jira

我有以下代码(来自jira-ruby gem api doc)。它成功更新了“注释”,但没有更新Jira中的自定义字段值。我确保自定义字段的名称在json转储中是正确的。建议任何替代方案?

非常感谢任何帮助,

output = File.new("jira_dump2.json","w+")

issue = client.Issue.find("DEV-XXXXX")
output.puts issue.to_json

#this throws no errors and does not work
issue.save({"fields"=>{"customfield_11530"=>"a0x40000000PHet"}})

#this following code works
comment = issue.comments.build
comment.save!(:body => "This is a comment added from REST API newer" )

1 个答案:

答案 0 :(得分:1)

一个好的开始是使用curl进行类似的调用:

curl -D- -u user:password -X PUT --data @request.txt -H "Content-Type: application/json" http://jira-server:port/rest/api/2/issue/DEV-XXXXX

(替换用户,密码,jira-server和端口)

文件request.txt应包含json请求:

{"fields":{"customfield_11530":"a0x40000000PHet"}}

在我的情况下工作但jira-ruby gem提出了不同的请求:它使用了像/ rest / api / 2 / issue / 22241这样的路径导致了400 Bad Request错误和正文消息

"Field 'customfield_11530' cannot be set. It is not on the appropriate screen, or unknown."

为了修复gem,我在gem

中的base.rb中更改了这些行
417       if @attrs['self']
418         @attrs['self'].sub(@client.options[:site],'')
419       elsif key_value
420         self.class.singular_path(client, key_value.to_s, prefix)

到此:

417       if key_value
418         self.class.singular_path(client, key_value.to_s, prefix)
419       elsif @attrs['self']
420         @attrs['self'].sub(@client.options[:site],'')

(在我的机器上“/usr/local/lib/ruby/gems/2.0.0/gems/jira-ruby-0.1.2/lib/jira”)

这就是诀窍。希望它也适合你。 在这里,您可以在维护者的JIRA系统中查看问题的状态:http://jira.sumoheavylabs.com/browse/JR-3

如果您想在代码中获取更多错误信息,请执行以下操作:

begin
    issue.save!( updateHash )
rescue JIRA::HTTPError => e
    puts e.response.code
    puts e.response.message
    puts e.response.body  
end