枚举可设置的参数

时间:2013-04-22 10:23:53

标签: ruby rally

我成功设置了与Rally项目的连接,但在打开缺陷时无法以编程方式设置"Submitted By"字段。我错误地参数,或者它不能通过REST API设置。任何有关查询可修改参数,链接到属性名称或代码以设置"Submitted By"参数的帮助都将非常感激。

我的目标是建立一个人们提交缺陷或故事的网页,以及他们的电子邮件,然后使用它来填写“提交者”字段中的用户名。我当前的设置可以打开故事和缺陷,但只是匿名,因为倒数第二行没有效果。

我正在使用Ruby API,以下是当用户点击主页面上的按钮时调用的ruby代码,该按钮将它们重定向到localhost:4567 / rally_defect,Sinatra正在侦听。

require 'rubygems'
require 'rally_rest_api'
require 'sinatra'

custom_headers = CustomHttpHeader.new
custom_headers.name = 'Mail 2 Rally'
custom_headers.version = '0.1'
custom_headers.vendor = 'Rally Software'

rally_server = 'https://rally1.rallydev.com/slm'
rally_username = <insert rally username>
rally_pwd = <insert rally password>

rally = RallyRestAPI.new(:base_url => rally_server,
                         :username => rally_username,
                         :password => rally_pwd,
                         :http_headers => custom_headers)

get '/rally_defect' do
  rally.create(:defect, :name => "Test Defect", 
                        :description => "This is a test",
                        :SubmittedBy => "test")                     
end

1 个答案:

答案 0 :(得分:0)

如果您开始构建此集成,我强烈建议您使用rally_api代替rally_rest_api

rally_rest_api正在因性能和稳定性问题而被弃用。 rally_rest_api将继续向前发展。

您可以在这里找到关于rally_api的文档:

https://developer.help.rallydev.com/ruby-toolkit-rally-rest-api-json

rally_api确实需要Ruby 1.9.2或更高版本。

rally_api的语法与rally_rest_api非常相似。你上面尝试的rally_api版本看起来就像下面的代码示例。请注意,可以通过在对象哈希中包含其名称并将其设置为值来设置任何“可设置”参数。

查找Rally Webservices API对象模型的最佳位置,包括Artifact属性,允许值以及它们是否可写,是Webservices API文档:

https://rally1.rallydev.com/slm/doc/webservice

当一个Rally Artifact的属性本身就像一个用户的Rally对象时,例如,首先在Rally中查找Object(下面的示例执行此操作),或者将值设置为对象的REST URL引用在拉力赛中。例如,如果你知道user@company.com在Rally中有ObjectID 12345678910,那么你可以这样做:

user_ref = "/user/12345678910"
new_defect["SubmittedBy"] = user_ref

下面的代码显示了在给定电子邮件格式的UserID的情况下查找Rally以获取User对象的方法,因为我假设您可能需要容纳多个不同的用户。

require 'rubygems'
require 'rally_api'
require 'sinatra'

#Setting custom headers
headers = RallyAPI::CustomHttpHeader.new()
headers.name = 'Mail 2 Rally'
headers.vendor = "My Company"
headers.version = "0.1"

# Rally credentials
rally_username = <insert rally username>
rally_pwd = <insert rally password>
rally_server = 'https://rally1.rallydev.com/slm'

# Rally REST API config
config = {:base_url => rally_server}
config[:username] = rally_username
config[:password] = rally_pwd
config[:workspace] = "Workspace Name"
config[:project] = "Project Name"
config[:headers] = headers #from RallyAPI::CustomHttpHeader.new()

# New up rally connection config
@rally = RallyAPI::RallyRestJson.new(config)

# Lookup UserID for SubmittedBY
submitted_by_user_id = "user@company.com"    

user_query = RallyAPI::RallyQuery.new()
user_query.type = :user
user_query.fetch = "ObjectID,UserName,DisplayName"
user_query.order = "UserName Asc"
user_query.query_string = "(UserName = \"#{submitted_by_user_id}\")"

# Query for user
user_query_results = @rally.find(user_query)
submitted_by_user = user_query_results.first

# Create the Defect
new_defect = {}
new_defect["Name"] = "Test Defect"
new_defect["Description"] = "This is a test"
new_defect["SubmittedBy"] = submitted_by_user

new_defect_create_result = @rally.create(:defect, new_defect)

puts "New Defect created FormattedID: #{new_defect_create_result.FormattedID}"