Skip to content

Commit 68df400

Browse files
committed
Merge pull request #278 from korczis/rest-merge
Override #inspect
2 parents c485664 + 8079d53 commit 68df400

5 files changed

Lines changed: 62 additions & 1 deletion

File tree

lib/gooddata.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# encoding: UTF-8
22

3+
require 'pmap'
4+
$pmap_default_thread_count = 20 # rubocop:disable GlobalVars
5+
36
# GoodData Module
47
module GoodData
58
end

lib/gooddata/mixins/inspector.rb

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# encoding: UTF-8
2+
3+
# See https://gist.github.com/ubermajestix/3644301
4+
5+
module GoodData
6+
module Mixin
7+
# When an RSpec test like this fails,
8+
#
9+
# @my_array.should == [@some_model, @some_model2]
10+
#
11+
# RSpec will call inspect on each of the objects to "help" you figure out
12+
# what went wrong. Well, inspect will usually dump a TON OF SHIT and make trying
13+
# to figure out why `@my_array` is not made up of `@some_model` and `@some_model2`.
14+
#
15+
# This little module and technique helps get around that. It will redefine `inspect`
16+
# if you include it in your model object.
17+
#
18+
# You can define a whitelist of methods that inspect will dump.
19+
# It will always provide `object_id` at a minimum.
20+
#
21+
# To use it, drop it in spec/support/inspector.rb and class_eval the models to
22+
# override `inspect`.
23+
module Inspector
24+
def inspect
25+
string = "#<#{self.class.name}:#{object_id} "
26+
fields = self.class.inspector_fields.map { |field| "#{field}: #{send(field)}" }
27+
string << fields.join(', ') << '>'
28+
end
29+
30+
def self.inspected
31+
@inspected ||= []
32+
end
33+
34+
def self.included(source)
35+
# $stdout.puts "Overriding inspect on #{source}"
36+
inspected << source
37+
source.class_eval do
38+
def self.inspector(*fields)
39+
@inspector_fields = *fields
40+
end
41+
42+
def self.inspector_fields
43+
@inspector_fields ||= []
44+
end
45+
end
46+
end
47+
end
48+
end
49+
end

lib/gooddata/models/process.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ def links
208208
def link
209209
links['self']
210210
end
211+
211212
alias_method :uri, :link
212213

213214
def obj_id

lib/gooddata/models/project.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
require 'csv'
44
require 'zip'
55
require 'fileutils'
6+
require 'multi_json'
67
require 'pmap'
78
require 'zip'
89

910
require_relative '../exceptions/no_project_error'
1011

11-
require_relative '../mixins/rest_resource'
1212
require_relative '../rest/resource'
13+
require_relative '../mixins/author'
14+
require_relative '../mixins/contributor'
15+
require_relative '../mixins/rest_resource'
1316

1417
require_relative 'process'
1518
require_relative 'project_role'

lib/gooddata/rest/client.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
require_relative 'connections/connections'
88
require_relative 'object_factory'
99

10+
require_relative '../mixins/inspector'
11+
1012
module GoodData
1113
module Rest
1214
# User's interface to GoodData Platform.
@@ -34,6 +36,9 @@ class Client
3436
# TODO: Decide if we need provide direct access to factory
3537
attr_reader :factory
3638

39+
include Mixin::Inspector
40+
inspector :object_id
41+
3742
#################################
3843
# Class methods
3944
#################################

0 commit comments

Comments
 (0)