def find(query_obj = RallyQuery.new)
      yield query_obj if block_given?

      if query_obj.workspace.nil?
        query_obj.workspace = rally_workspace_object unless rally_workspace_object.nil?
      end

      errs = query_obj.validate()
      if errs.length > 0
        raise StandardError, "Errors making Rally Query: #{errs.to_s}"
      end

      query_url = make_query_url(@rally_url, @wsapi_version, check_type(query_obj.type.to_s))
      query_url += '.js' if @wsapi_version !~ /^v2/
      query_params = query_obj.make_query_params
      args =  {:method => :get}
      json_response = @rally_connection.get_all_json_results(query_url, args, query_params, query_obj.limit)
      RallyQueryResult.new(self, json_response, warnings(json_response))
    end
def find(query_obj = RallyQuery.new)
      yield query_obj if block_given?

      if query_obj.workspace.nil?
        query_obj.workspace = rally_workspace_object unless rally_workspace_object.nil?
      end

      errs = query_obj.validate()
      if errs.length > 0
        raise StandardError, "Errors making Rally Query: #{errs.to_s}"
      end

      query_url = make_query_url(@rally_url, @wsapi_version, check_type(query_obj.type.to_s))
      query_url += '.js' if @wsapi_version !~ /^v2/
      query_params = query_obj.make_query_params
      args =  {:method => :get}
      json_response = @rally_connection.get_all_json_results(query_url, args, query_params, query_obj.limit)
      RallyQueryResult.new(self, json_response, warnings(json_response))
    end
-----
Querying Rally example
test_query = RallyAPI::RallyQuery.new()
test_query.type = :defect
test_query.fetch = "Name"
test_query.workspace = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12345" } #optional
test_query.project = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/project/12345" }     #optional
test_query.page_size = 200       #optional - default is 200
test_query.limit = 1000          #optional - default is 99999
test_query.project_scope_up = false
test_query.project_scope_down = true
test_query.order = "Name Asc"
test_query.query_string = "(Severity = \"High\")"

results = @rally.find(test_query)

tip - set the fetch string of the query to the fields you need -
only resort to the read method if you want your code to be slow
results.each do |defect|
  puts defect.Name   # or defect["Name"]
  defect.read    #read the whole defect from Rally to get all fields (eg Severity)
  puts defect.Severity
end
query_obj is RallyQuery