gooddata 1.3.3-java → 1.3.4-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +129 -67
- data/CHANGELOG.md +31 -0
- data/CONTRIBUTING.md +16 -5
- data/Dockerfile +4 -4
- data/Dockerfile.jruby +0 -2
- data/README.md +1 -1
- data/SDK_VERSION +1 -0
- data/VERSION +1 -1
- data/bin/run_brick.rb +14 -3
- data/docker-compose.yml +1 -0
- data/gooddata.gemspec +6 -4
- data/lcm.rake +13 -25
- data/lib/gooddata.rb +4 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +3 -3
- data/lib/gooddata/bricks/middleware/dwh_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +4 -8
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +11 -2
- data/lib/gooddata/bricks/middleware/mask_logger_decorator.rb +38 -0
- data/lib/gooddata/cli/cli.rb +0 -1
- data/lib/gooddata/cli/commands/domain_cmd.rb +0 -1
- data/lib/gooddata/cli/commands/project_cmd.rb +0 -1
- data/lib/gooddata/cli/hooks.rb +0 -1
- data/lib/gooddata/connection.rb +1 -1
- data/lib/gooddata/extensions/object.rb +0 -4
- data/lib/gooddata/helpers/global_helpers.rb +3 -3
- data/lib/gooddata/lcm/actions/hello_world.rb +1 -1
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +6 -4
- data/lib/gooddata/lcm/actions/synchronize_users.rb +38 -75
- data/lib/gooddata/lcm/brick_logger.rb +6 -6
- data/lib/gooddata/lcm/dsl/dsl.rb +0 -7
- data/lib/gooddata/lcm/lcm.rb +6 -6
- data/lib/gooddata/lcm/lcm2.rb +7 -23
- data/lib/gooddata/mixins/inspector.rb +0 -1
- data/lib/gooddata/models/process.rb +9 -5
- data/lib/gooddata/models/project.rb +13 -16
- data/lib/gooddata/models/project_creator.rb +2 -2
- data/lib/gooddata/models/schedule.rb +5 -2
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +2 -0
- data/lib/gooddata/rest/client.rb +3 -3
- data/lib/gooddata/rest/connection.rb +3 -3
- data/lib/gooddata/version.rb +12 -2
- metadata +14 -34
@@ -9,18 +9,18 @@ module GoodData
|
|
9
9
|
class BrickFileLogger
|
10
10
|
# entry-point
|
11
11
|
# @param [String] log_directory directory to create log files
|
12
|
-
# @param [String]
|
13
|
-
def initialize(log_directory,
|
12
|
+
# @param [String] log_file - file to log
|
13
|
+
def initialize(log_directory, log_file)
|
14
14
|
@log_directory = log_directory
|
15
|
-
@
|
15
|
+
@log_file = log_file
|
16
16
|
end
|
17
17
|
|
18
18
|
# Creates file in log directory with given content. Logging is disabled when log_directory is nil.
|
19
19
|
#
|
20
|
-
# @param [String] status brick phase/status (start, finished, error,...)
|
21
20
|
# @param [String] content log file content
|
22
|
-
def log_action(
|
23
|
-
|
21
|
+
def log_action(content)
|
22
|
+
FileUtils.mkpath @log_directory
|
23
|
+
File.open("#{@log_directory}/#{@log_file}", 'a') { |file| file.write(content + "\n") }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
data/lib/gooddata/lcm/dsl/dsl.rb
CHANGED
data/lib/gooddata/lcm/lcm.rb
CHANGED
@@ -30,10 +30,10 @@ module GoodData
|
|
30
30
|
def transfer_everything(client, domain, migration_spec, opts = {})
|
31
31
|
filter_on_segment = migration_spec[:segments] || migration_spec['segments'] || []
|
32
32
|
|
33
|
-
|
33
|
+
GoodData.logger.info('Ensuring Users - warning: works across whole domain not just provided segment(s)')
|
34
34
|
ensure_users(domain, migration_spec, filter_on_segment)
|
35
35
|
|
36
|
-
|
36
|
+
GoodData.logger.info('Migrating Blueprints')
|
37
37
|
|
38
38
|
bp_opts = {
|
39
39
|
update_preference: opts[:update_preference] || opts['update_preference'],
|
@@ -89,7 +89,7 @@ module GoodData
|
|
89
89
|
# GoodData::LCM.transfer_meta(segment.master_project, target_projects)
|
90
90
|
end
|
91
91
|
|
92
|
-
|
92
|
+
GoodData.logger.info('Migrating Processes and Schedules')
|
93
93
|
|
94
94
|
deployment_client = migration_spec.key?(:user_for_deployment) ? GoodData.connect(migration_spec[:user_for_deployment]) : client
|
95
95
|
domain.clients.peach do |c|
|
@@ -126,7 +126,7 @@ module GoodData
|
|
126
126
|
begin
|
127
127
|
GoodData::LCM.transfer_label_types(segment_master, project)
|
128
128
|
rescue => e
|
129
|
-
|
129
|
+
GoodData.logger.error("Unable to transfer label_types, reason: #{e.message}")
|
130
130
|
end
|
131
131
|
|
132
132
|
# Transfer tagged objects
|
@@ -137,7 +137,7 @@ module GoodData
|
|
137
137
|
|
138
138
|
do_not_synchronize_clients = migration_spec[:do_not_synchronize_clients]
|
139
139
|
if do_not_synchronize_clients.nil? || !do_not_synchronize_clients
|
140
|
-
|
140
|
+
GoodData.logger.info('Migrating Dashboards')
|
141
141
|
if filter_on_segment.empty?
|
142
142
|
domain.synchronize_clients
|
143
143
|
else
|
@@ -148,7 +148,7 @@ module GoodData
|
|
148
148
|
end
|
149
149
|
|
150
150
|
# User groups must be migrated after dashboards
|
151
|
-
|
151
|
+
GoodData.logger.info('Migrating User Groups')
|
152
152
|
domain.clients.peach do |c|
|
153
153
|
segment = c.segment
|
154
154
|
segment_master = segment.master_project
|
data/lib/gooddata/lcm/lcm2.rb
CHANGED
@@ -16,7 +16,6 @@ require 'gooddata/extensions/nil'
|
|
16
16
|
require 'active_support/core_ext/hash/compact'
|
17
17
|
|
18
18
|
require_relative 'actions/actions'
|
19
|
-
require_relative 'brick_logger'
|
20
19
|
require_relative 'dsl/dsl'
|
21
20
|
require_relative 'helpers/helpers'
|
22
21
|
|
@@ -218,7 +217,7 @@ module GoodData
|
|
218
217
|
t.add_separator if index < rows.length - 1
|
219
218
|
end
|
220
219
|
end
|
221
|
-
|
220
|
+
GoodData.logger.info("\n#{table}")
|
222
221
|
end
|
223
222
|
|
224
223
|
def print_action_result(action, messages)
|
@@ -255,13 +254,13 @@ module GoodData
|
|
255
254
|
end
|
256
255
|
end
|
257
256
|
|
258
|
-
|
257
|
+
GoodData.logger.info("\n#{table}")
|
259
258
|
end
|
260
259
|
|
261
260
|
def print_actions_result(actions, results)
|
262
261
|
actions.each_with_index do |action, index|
|
263
262
|
print_action_result(action, results[index])
|
264
|
-
|
263
|
+
GoodData.logger.info
|
265
264
|
end
|
266
265
|
nil
|
267
266
|
end
|
@@ -272,15 +271,6 @@ module GoodData
|
|
272
271
|
# Get actions for mode specified
|
273
272
|
actions = get_mode_actions(mode)
|
274
273
|
|
275
|
-
if params.key?('log_directory')
|
276
|
-
brick_logger = BrickFileLogger.new(params['log_directory'], mode)
|
277
|
-
logging_enabled = true
|
278
|
-
else
|
279
|
-
logging_enabled = false
|
280
|
-
end
|
281
|
-
if logging_enabled
|
282
|
-
brick_logger.log_action('start', JSON.pretty_generate(params))
|
283
|
-
end
|
284
274
|
if params.actions
|
285
275
|
actions = params.actions.map do |action|
|
286
276
|
"GoodData::LCM2::#{action}".split('::').inject(Object) do |o, c|
|
@@ -319,8 +309,7 @@ module GoodData
|
|
319
309
|
errors = []
|
320
310
|
results = []
|
321
311
|
actions.each do |action|
|
322
|
-
|
323
|
-
|
312
|
+
GoodData.logger.info("\n")
|
324
313
|
# Invoke action
|
325
314
|
begin
|
326
315
|
out = run_action action, params
|
@@ -346,7 +335,6 @@ module GoodData
|
|
346
335
|
params.merge!(new_params)
|
347
336
|
|
348
337
|
# Print action result
|
349
|
-
puts
|
350
338
|
print_action_result(action, res)
|
351
339
|
|
352
340
|
# Store result for final summary
|
@@ -365,15 +353,11 @@ module GoodData
|
|
365
353
|
success: errors.empty?
|
366
354
|
}
|
367
355
|
|
356
|
+
has_errors = errors.any?
|
368
357
|
# Fail whole execution if there is any failed action
|
369
|
-
fail(JSON.pretty_generate(errors)) if strict_mode &&
|
358
|
+
fail(JSON.pretty_generate(errors)) if strict_mode && has_errors
|
370
359
|
|
371
360
|
result
|
372
|
-
|
373
|
-
ensure
|
374
|
-
if logging_enabled
|
375
|
-
brick_logger.log_action('finished', JSON.pretty_generate(result))
|
376
|
-
end
|
377
361
|
end
|
378
362
|
|
379
363
|
def run_action(action, params)
|
@@ -420,7 +404,7 @@ module GoodData
|
|
420
404
|
end
|
421
405
|
|
422
406
|
table = Terminal::Table.new :headings => ['Action', 'Parameter', 'Description', 'Parameter Type'], :rows => rows
|
423
|
-
|
407
|
+
GoodData.logger.info("\n#{table}")
|
424
408
|
end
|
425
409
|
end
|
426
410
|
end
|
@@ -68,7 +68,7 @@ module GoodData
|
|
68
68
|
res = GoodData::Process.deploy(dir, options.merge(:files_to_exclude => params))
|
69
69
|
block.call(res)
|
70
70
|
rescue => e
|
71
|
-
|
71
|
+
GoodData.logger.error(e.inspect)
|
72
72
|
ensure
|
73
73
|
res.delete if res
|
74
74
|
end
|
@@ -114,7 +114,7 @@ module GoodData
|
|
114
114
|
fail ArgumentError, 'options[:name] can not be nil or empty!' if deploy_name.nil? || deploy_name.empty?
|
115
115
|
|
116
116
|
verbose = options[:verbose] || false
|
117
|
-
|
117
|
+
GoodData.logger.info("Deploying #{path}") if verbose
|
118
118
|
|
119
119
|
deployed_path = Process.upload_package(path, files_to_exclude, client: client, project: project)
|
120
120
|
data = {
|
@@ -171,7 +171,7 @@ module GoodData
|
|
171
171
|
fail ArgumentError, 'options[:name] can not be nil or empty!' if deploy_name.nil? || deploy_name.empty?
|
172
172
|
|
173
173
|
verbose = options[:verbose] || false
|
174
|
-
|
174
|
+
GoodData.logger.info("Deploying #{path}") if verbose
|
175
175
|
|
176
176
|
data = {
|
177
177
|
process: {
|
@@ -233,7 +233,7 @@ module GoodData
|
|
233
233
|
|
234
234
|
def zip_and_upload(path, files_to_exclude, opts = {})
|
235
235
|
client = opts[:client]
|
236
|
-
|
236
|
+
GoodData.logger.info('Creating package for upload')
|
237
237
|
if !path.directory? && (path.extname == '.grf' || path.extname == '.rb')
|
238
238
|
with_zip(opts) do |zipfile|
|
239
239
|
zipfile.add(File.basename(path), path)
|
@@ -248,7 +248,7 @@ module GoodData
|
|
248
248
|
else
|
249
249
|
with_zip(opts) do |zipfile|
|
250
250
|
files_to_upload = Dir[File.join(path, '**', '**')].reject { |f| files_to_exclude.include?(Pathname(path) + f) }
|
251
|
-
|
251
|
+
GoodData.logger.info("Uploading #{files_to_upload.count} files.")
|
252
252
|
files_to_upload.each do |file|
|
253
253
|
file_pathname = Pathname.new(file)
|
254
254
|
file_relative_pathname = file_pathname.relative_path_from(Pathname.new(path))
|
@@ -341,6 +341,10 @@ module GoodData
|
|
341
341
|
project.schedules.select { |schedule| schedule.process_id == obj_id }
|
342
342
|
end
|
343
343
|
|
344
|
+
def create_manual_schedule(options = {})
|
345
|
+
create_schedule(nil, nil, options)
|
346
|
+
end
|
347
|
+
|
344
348
|
def create_schedule(cron, executable, options = {})
|
345
349
|
project.create_schedule(process_id, cron, executable, options.merge(client: client, project: project))
|
346
350
|
end
|
@@ -483,12 +483,12 @@ module GoodData
|
|
483
483
|
end
|
484
484
|
|
485
485
|
def transfer_tagged_stuff(from_project, to_project, tag)
|
486
|
-
|
486
|
+
GoodData.logger.info("Transferring tagged stuff - #{tag}")
|
487
487
|
|
488
488
|
objects = from_project.find_by_tag(tag)
|
489
489
|
|
490
490
|
if objects.any?
|
491
|
-
|
491
|
+
GoodData.logger.info("\n#{JSON.pretty_generate(objects)}")
|
492
492
|
from_project.partial_md_export(objects, project: to_project)
|
493
493
|
else
|
494
494
|
GoodData.logger.info('No tagged objects to transfer')
|
@@ -1044,7 +1044,7 @@ module GoodData
|
|
1044
1044
|
#
|
1045
1045
|
# TODO: Return invite object
|
1046
1046
|
def invite(email, role, msg = DEFAULT_INVITE_MESSAGE)
|
1047
|
-
|
1047
|
+
GoodData.logger.info("Inviting #{email}, role: #{role}")
|
1048
1048
|
|
1049
1049
|
role_url = nil
|
1050
1050
|
if role.index('/gdc/').nil?
|
@@ -1302,19 +1302,16 @@ module GoodData
|
|
1302
1302
|
results = blueprint.datasets.pmap do |ds|
|
1303
1303
|
[ds, ds.count(self)]
|
1304
1304
|
end
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
puts "Datasets - #{results.count}"
|
1309
|
-
puts
|
1305
|
+
GoodData.logger.info(title)
|
1306
|
+
GoodData.logger.info(GoodData::Helpers.underline(title))
|
1307
|
+
GoodData.logger.info("\nDatasets - #{results.count}\n")
|
1310
1308
|
results.each do |x|
|
1311
1309
|
dataset, count = x
|
1312
1310
|
dataset.title.tap do |t|
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
puts
|
1311
|
+
GoodData.logger.info(t)
|
1312
|
+
GoodData.logger.info(GoodData::Helpers.underline(t))
|
1313
|
+
GoodData.logger.info("Size - #{count} rows")
|
1314
|
+
GoodData.logger.info("#{dataset.attributes_and_anchors.count} attributes, #{dataset.facts.count} facts, #{dataset.references.count} references\n")
|
1318
1315
|
end
|
1319
1316
|
end
|
1320
1317
|
nil
|
@@ -1357,7 +1354,7 @@ module GoodData
|
|
1357
1354
|
metrics: metrics,
|
1358
1355
|
report_definitions: rds
|
1359
1356
|
}.each do |key, collection|
|
1360
|
-
|
1357
|
+
GoodData.logger.info("Replacing #{key}")
|
1361
1358
|
collection.peach do |item|
|
1362
1359
|
new_item = item.replace(mapping)
|
1363
1360
|
if new_item.json != item.json
|
@@ -1375,7 +1372,7 @@ module GoodData
|
|
1375
1372
|
|
1376
1373
|
GoodData.logger.info 'Replacing hidden metrics'
|
1377
1374
|
local_metrics = mapping.map { |a, _| a }.pmapcat { |a| a.usedby('metric') }.select { |m| m['deprecated'] == '1' }.map { |m| m['link'] }.uniq
|
1378
|
-
|
1375
|
+
GoodData.logger.info("Found #{local_metrics.count} metrics")
|
1379
1376
|
local_metrics.pmap { |m| metrics(m) }.peach do |item|
|
1380
1377
|
new_item = item.replace(mapping)
|
1381
1378
|
if new_item.json != item.json
|
@@ -1392,7 +1389,7 @@ module GoodData
|
|
1392
1389
|
|
1393
1390
|
GoodData.logger.info 'Replacing dashboard saved views'
|
1394
1391
|
contexts = mapping.map { |a, _| a }.pmapcat { |a| a.usedby('executionContext') }.map { |a| GoodData::MdObject[a['link'], client: client, project: self] }
|
1395
|
-
|
1392
|
+
GoodData.logger.info("Found #{contexts.count} dashboard saved views")
|
1396
1393
|
contexts.peach do |item|
|
1397
1394
|
new_item = GoodData::MdObject.replace_quoted(item, mapping)
|
1398
1395
|
if new_item.json != item.json
|
@@ -75,7 +75,7 @@ module GoodData
|
|
75
75
|
project.execute_maql(chunk)
|
76
76
|
end
|
77
77
|
rescue => e
|
78
|
-
|
78
|
+
GoodData.logger.error("Error occured when executing MAQL, project: \"#{project.title}\" reason: \"#{e.message}\", chunks: #{replaced_maql_chunks.inspect}")
|
79
79
|
errors << e
|
80
80
|
next
|
81
81
|
end
|
@@ -85,7 +85,7 @@ module GoodData
|
|
85
85
|
begin
|
86
86
|
ca_chunks.each { |chunk| project.execute_maql(chunk) }
|
87
87
|
rescue => e
|
88
|
-
|
88
|
+
GoodData.logger.error("Error occured when executing MAQL, project: \"#{project.title}\" reason: \"#{e.message}\", chunks: #{ca_chunks.inspect}")
|
89
89
|
errors << e
|
90
90
|
end
|
91
91
|
end
|
@@ -67,7 +67,8 @@ module GoodData
|
|
67
67
|
|
68
68
|
fail 'Process ID has to be provided' if process_id.blank?
|
69
69
|
|
70
|
-
|
70
|
+
process = Process[process_id, project: project, client: c]
|
71
|
+
is_dataload_process = process.type == :dataload
|
71
72
|
|
72
73
|
if is_dataload_process
|
73
74
|
dataload_datasets = options[:dataload_datasets] || options['GDC_DATALOAD_DATASETS']
|
@@ -75,7 +76,9 @@ module GoodData
|
|
75
76
|
|
76
77
|
de_synchronize_all = options[:de_synchronize_all] || options['GDC_DE_SYNCHRONIZE_ALL']
|
77
78
|
else
|
78
|
-
|
79
|
+
lcm_component = process.type == :lcm
|
80
|
+
executable_missing = !lcm_component && executable.blank?
|
81
|
+
fail 'Executable has to be provided' if executable_missing
|
79
82
|
end
|
80
83
|
|
81
84
|
schedule = c.create(GoodData::Schedule, GoodData::Helpers.stringify_keys(GoodData::Helpers.deep_dup(SCHEDULE_TEMPLATE)), client: c, project: project)
|
@@ -209,6 +209,8 @@ module GoodData
|
|
209
209
|
|
210
210
|
# Creates a MAQL expression(s) based on the filter defintion.
|
211
211
|
# Takes the filter definition looks up any necessary values and provides API executable MAQL
|
212
|
+
# @param labels_cache e.g. { 'label_uri': label_object }
|
213
|
+
# @param lookups_cache e.g. { 'label_uri': { "jirka@gooddata.com": 'value_uri' }}
|
212
214
|
def self.create_expression(filter, labels_cache, lookups_cache, attr_cache, options = {})
|
213
215
|
values = filter[:values]
|
214
216
|
label = labels_cache[filter[:label]]
|
data/lib/gooddata/rest/client.rb
CHANGED
@@ -194,8 +194,8 @@ module GoodData
|
|
194
194
|
|
195
195
|
def disconnect
|
196
196
|
if stats_on?
|
197
|
-
|
198
|
-
|
197
|
+
GoodData.logger.info("API call statistics to server #{@connection.server}")
|
198
|
+
GoodData.logger.info(@connection.stats_table)
|
199
199
|
end
|
200
200
|
@connection.disconnect
|
201
201
|
end
|
@@ -221,7 +221,7 @@ module GoodData
|
|
221
221
|
|
222
222
|
# Gets resource by name
|
223
223
|
def resource(res_name)
|
224
|
-
|
224
|
+
GoodData.logger.info("Getting resource '#{res_name}'")
|
225
225
|
nil
|
226
226
|
end
|
227
227
|
|
@@ -175,13 +175,13 @@ module GoodData
|
|
175
175
|
merge_headers!(headers)
|
176
176
|
get('/gdc/account/token', @request_params)
|
177
177
|
|
178
|
-
@user = get(
|
178
|
+
@user = get('/gdc/account/profile/current')
|
179
179
|
GoodData.logger.info("Connected using SST to server #{@server.url} to profile \"#{@user['accountSetting']['login']}\"")
|
180
180
|
@auth = {}
|
181
181
|
refresh_token :dont_reauth => true
|
182
182
|
elsif options[:headers][:x_gdc_authsst]
|
183
183
|
@request_params = options[:headers]
|
184
|
-
@user = get('/gdc/
|
184
|
+
@user = get('/gdc/account/profile/current')
|
185
185
|
GoodData.logger.info("Connected using SST to server #{@server.url} to profile \"#{@user['accountSetting']['login']}\"")
|
186
186
|
@auth = {}
|
187
187
|
refresh_token :dont_reauth => true
|
@@ -293,7 +293,7 @@ module GoodData
|
|
293
293
|
# Remove when TT sent in headers. Currently we need to parse from body
|
294
294
|
merge_headers!(:x_gdc_authtt => GoodData::Helpers.get_path(response, %w(userToken token)))
|
295
295
|
rescue Exception => e # rubocop:disable RescueException
|
296
|
-
|
296
|
+
GoodData.logger.error(e.message)
|
297
297
|
raise e
|
298
298
|
end
|
299
299
|
end
|
data/lib/gooddata/version.rb
CHANGED
@@ -6,14 +6,24 @@
|
|
6
6
|
|
7
7
|
# GoodData Module
|
8
8
|
module GoodData
|
9
|
-
VERSION =
|
9
|
+
VERSION = File.read('SDK_VERSION')
|
10
|
+
BRICKS_VERSION = File.read('VERSION')
|
10
11
|
|
11
12
|
class << self
|
12
|
-
#
|
13
|
+
# SDK version
|
14
|
+
# @return SDK version
|
13
15
|
def version
|
14
16
|
VERSION
|
15
17
|
end
|
16
18
|
|
19
|
+
alias_method :sdk_version, :version
|
20
|
+
|
21
|
+
# LCM bricks version
|
22
|
+
# @return brick version
|
23
|
+
def bricks_version
|
24
|
+
BRICKS_VERSION
|
25
|
+
end
|
26
|
+
|
17
27
|
# Identifier of gem version
|
18
28
|
# @return Formatted gem version
|
19
29
|
def gem_version_string
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gooddata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Pavel Kolesnikov
|
@@ -14,22 +14,8 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date:
|
17
|
+
date: 2019-01-16 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
|
-
- !ruby/object:Gem::Dependency
|
20
|
-
requirement: !ruby/object:Gem::Requirement
|
21
|
-
requirements:
|
22
|
-
- - "~>"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '1.14'
|
25
|
-
name: bundler
|
26
|
-
prerelease: false
|
27
|
-
type: :development
|
28
|
-
version_requirements: !ruby/object:Gem::Requirement
|
29
|
-
requirements:
|
30
|
-
- - "~>"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '1.14'
|
33
19
|
- !ruby/object:Gem::Dependency
|
34
20
|
requirement: !ruby/object:Gem::Requirement
|
35
21
|
requirements:
|
@@ -63,7 +49,7 @@ dependencies:
|
|
63
49
|
requirements:
|
64
50
|
- - "~>"
|
65
51
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
52
|
+
version: 3.5.0
|
67
53
|
name: rspec
|
68
54
|
prerelease: false
|
69
55
|
type: :development
|
@@ -71,7 +57,7 @@ dependencies:
|
|
71
57
|
requirements:
|
72
58
|
- - "~>"
|
73
59
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
60
|
+
version: 3.5.0
|
75
61
|
- !ruby/object:Gem::Dependency
|
76
62
|
requirement: !ruby/object:Gem::Requirement
|
77
63
|
requirements:
|
@@ -170,20 +156,6 @@ dependencies:
|
|
170
156
|
- - "~>"
|
171
157
|
- !ruby/object:Gem::Version
|
172
158
|
version: '0.1'
|
173
|
-
- !ruby/object:Gem::Dependency
|
174
|
-
requirement: !ruby/object:Gem::Requirement
|
175
|
-
requirements:
|
176
|
-
- - "~>"
|
177
|
-
- !ruby/object:Gem::Version
|
178
|
-
version: '4.11'
|
179
|
-
name: ZenTest
|
180
|
-
prerelease: false
|
181
|
-
type: :development
|
182
|
-
version_requirements: !ruby/object:Gem::Requirement
|
183
|
-
requirements:
|
184
|
-
- - "~>"
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version: '4.11'
|
187
159
|
- !ruby/object:Gem::Dependency
|
188
160
|
requirement: !ruby/object:Gem::Requirement
|
189
161
|
requirements:
|
@@ -215,17 +187,23 @@ dependencies:
|
|
215
187
|
- !ruby/object:Gem::Dependency
|
216
188
|
requirement: !ruby/object:Gem::Requirement
|
217
189
|
requirements:
|
218
|
-
- - "
|
190
|
+
- - ">"
|
219
191
|
- !ruby/object:Gem::Version
|
220
192
|
version: 4.2.9
|
193
|
+
- - "<"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '5.2'
|
221
196
|
name: activesupport
|
222
197
|
prerelease: false
|
223
198
|
type: :runtime
|
224
199
|
version_requirements: !ruby/object:Gem::Requirement
|
225
200
|
requirements:
|
226
|
-
- - "
|
201
|
+
- - ">"
|
227
202
|
- !ruby/object:Gem::Version
|
228
203
|
version: 4.2.9
|
204
|
+
- - "<"
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '5.2'
|
229
207
|
- !ruby/object:Gem::Dependency
|
230
208
|
requirement: !ruby/object:Gem::Requirement
|
231
209
|
requirements:
|
@@ -529,6 +507,7 @@ files:
|
|
529
507
|
- README.md
|
530
508
|
- RELEASING.md
|
531
509
|
- Rakefile
|
510
|
+
- SDK_VERSION
|
532
511
|
- TODO.md
|
533
512
|
- VERSION
|
534
513
|
- authors.sh
|
@@ -571,6 +550,7 @@ files:
|
|
571
550
|
- lib/gooddata/bricks/middleware/fs_upload_middleware.rb
|
572
551
|
- lib/gooddata/bricks/middleware/gooddata_middleware.rb
|
573
552
|
- lib/gooddata/bricks/middleware/logger_middleware.rb
|
553
|
+
- lib/gooddata/bricks/middleware/mask_logger_decorator.rb
|
574
554
|
- lib/gooddata/bricks/middleware/middleware.rb
|
575
555
|
- lib/gooddata/bricks/middleware/restforce_middleware.rb
|
576
556
|
- lib/gooddata/bricks/middleware/stdout_middleware.rb
|