diff --git a/lib/rally_api/rally_rest_json.rb b/lib/rally_api/rally_rest_json.rb index 78c4e0e..e48eecf 100644 --- a/lib/rally_api/rally_rest_json.rb +++ b/lib/rally_api/rally_rest_json.rb @@ -132,18 +132,20 @@ def debug_logging_off @rally_connection.low_debug = false end - def find_workspace(workspace_name, matcher_ref = 'Name') - # use matcher_ref to search for 'Name' or '_ref' - sub = self.user["Subscription"].read({:fetch => "Workspaces,Name,State"}) - workspace = nil - sub.Workspaces.each do |ws| - #ws.read - if (ws[matcher_ref] == workspace_name) && (ws["State"] == "Open") - workspace = ws - break #doing a break for performance some customers have 100+ workspaces - no need to do the others - end - end - workspace + def find_workspace(workspace_name_or_ref, matcher_ref = 'Name') + q = RallyAPI::RallyQuery.new + q.type = "workspace" + q.fetch = "Name,ObjectID" + q.query_string = "(State = \"Open\")" + q.workspace = { "_ref" => "null" } + results = find(q) + match = results.select { |result| result[matcher_ref] == workspace_name_or_ref }.first + return nil unless match + + q.query_string = "(ObjectID = \"#{match["ObjectID"]}\")" + q.fetch = true # result must be a fully hydrated object + results = find(q) + results.first end def find_project(workspace_object, project_name) diff --git a/rally_api.gemspec b/rally_api.gemspec index d012bb5..8d8f9fc 100644 --- a/rally_api.gemspec +++ b/rally_api.gemspec @@ -16,11 +16,11 @@ Gem::Specification.new do |s| s.add_dependency('httpclient', '2.6.0.1') - s.add_development_dependency('bundler', '2.2.33') - s.add_development_dependency('rake', '12.3.4') - s.add_development_dependency('rspec', '3.1.0') - s.add_development_dependency('simplecov', '0.9.1') - s.add_development_dependency('pry', '0.10.1') + s.add_development_dependency('bundler', '~> 2.2') + s.add_development_dependency('rake', '~> 13.0') + s.add_development_dependency('rspec', '~> 3.1') + s.add_development_dependency('simplecov', '~> 0.9') + s.add_development_dependency('pry', '~> 0.10') #s.files = `git ls-files`.split("\n") s.files = %w(README.md LICENSE Gemfile rally_api.gemspec Rakefile) + Dir.glob("{lib}/**/*.rb")