如果您开始构建此集成,我强烈建议您使用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 对象模型(包括工件属性、允许值以及它们是否可写)的最佳位置是 Webservices API 文档:
https://rally1.rallydev.com/slm/doc/webservice
例如,当 Rally Artifact 的属性本身是像用户这样的 Rally 对象时,要么首先在 Rally 中查找对象(下面的示例就是这样做的),要么将值设置为对 Rally 中对象的 REST URL 引用。例如,如果您知道user@company.com
Rally 中的 ObjectID 为 12345678910,那么您可以执行以下操作:
user_ref = "/user/12345678910"
new_defect["SubmittedBy"] = user_ref
下面的代码显示了在给定电子邮件格式的用户 ID 的情况下查找 Rally 以获取用户对象的方法,因为我假设您可能需要容纳多个不同的用户。
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}"