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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +129 -67
  3. data/CHANGELOG.md +31 -0
  4. data/CONTRIBUTING.md +16 -5
  5. data/Dockerfile +4 -4
  6. data/Dockerfile.jruby +0 -2
  7. data/README.md +1 -1
  8. data/SDK_VERSION +1 -0
  9. data/VERSION +1 -1
  10. data/bin/run_brick.rb +14 -3
  11. data/docker-compose.yml +1 -0
  12. data/gooddata.gemspec +6 -4
  13. data/lcm.rake +13 -25
  14. data/lib/gooddata.rb +4 -0
  15. data/lib/gooddata/bricks/middleware/aws_middleware.rb +1 -1
  16. data/lib/gooddata/bricks/middleware/bench_middleware.rb +3 -3
  17. data/lib/gooddata/bricks/middleware/dwh_middleware.rb +1 -1
  18. data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +1 -1
  19. data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +1 -1
  20. data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +4 -8
  21. data/lib/gooddata/bricks/middleware/logger_middleware.rb +11 -2
  22. data/lib/gooddata/bricks/middleware/mask_logger_decorator.rb +38 -0
  23. data/lib/gooddata/cli/cli.rb +0 -1
  24. data/lib/gooddata/cli/commands/domain_cmd.rb +0 -1
  25. data/lib/gooddata/cli/commands/project_cmd.rb +0 -1
  26. data/lib/gooddata/cli/hooks.rb +0 -1
  27. data/lib/gooddata/connection.rb +1 -1
  28. data/lib/gooddata/extensions/object.rb +0 -4
  29. data/lib/gooddata/helpers/global_helpers.rb +3 -3
  30. data/lib/gooddata/lcm/actions/hello_world.rb +1 -1
  31. data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +6 -4
  32. data/lib/gooddata/lcm/actions/synchronize_users.rb +38 -75
  33. data/lib/gooddata/lcm/brick_logger.rb +6 -6
  34. data/lib/gooddata/lcm/dsl/dsl.rb +0 -7
  35. data/lib/gooddata/lcm/lcm.rb +6 -6
  36. data/lib/gooddata/lcm/lcm2.rb +7 -23
  37. data/lib/gooddata/mixins/inspector.rb +0 -1
  38. data/lib/gooddata/models/process.rb +9 -5
  39. data/lib/gooddata/models/project.rb +13 -16
  40. data/lib/gooddata/models/project_creator.rb +2 -2
  41. data/lib/gooddata/models/schedule.rb +5 -2
  42. data/lib/gooddata/models/user_filters/user_filter_builder.rb +2 -0
  43. data/lib/gooddata/rest/client.rb +3 -3
  44. data/lib/gooddata/rest/connection.rb +3 -3
  45. data/lib/gooddata/version.rb +12 -2
  46. 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] mode - brick mode (short name if brick)
13
- def initialize(log_directory, mode)
12
+ # @param [String] log_file - file to log
13
+ def initialize(log_directory, log_file)
14
14
  @log_directory = log_directory
15
- @mode = mode
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(status, content)
23
- File.write("#{@log_directory}/#{@mode}_#{status}.json", content)
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
@@ -27,13 +27,6 @@ module GoodData
27
27
  dsl = type.new
28
28
  dsl.instance_eval(&block)
29
29
 
30
- # puts "#{caption}: #{klass.name}"
31
- # puts JSON.pretty_generate(dsl.params)
32
- # puts
33
-
34
- # yield if block_given?
35
-
36
- # Return params
37
30
  dsl.params
38
31
  end
39
32
 
@@ -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
- puts 'Ensuring Users - warning: works across whole domain not just provided segment(s)'
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
- puts 'Migrating Blueprints'
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
- puts 'Migrating Processes and Schedules'
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
- puts "Unable to transfer label_types, reason: #{e.message}"
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
- puts 'Migrating Dashboards'
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
- puts 'Migrating User Groups'
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
@@ -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
- puts "\n#{table}"
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
- puts "\n#{table}"
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
- puts
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
- puts
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 && errors.any?
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
- puts table.to_s
407
+ GoodData.logger.info("\n#{table}")
424
408
  end
425
409
  end
426
410
  end
@@ -36,7 +36,6 @@ module GoodData
36
36
  end
37
37
 
38
38
  def self.included(source)
39
- # $stdout.puts "Overriding inspect on #{source}"
40
39
  inspected << source
41
40
  source.class_eval do
42
41
  def self.inspector(*fields)
@@ -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
- puts e.inspect
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
- puts HighLine.color("Deploying #{path}", HighLine::BOLD) if verbose
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
- puts HighLine.color("Deploying #{path}", HighLine::BOLD) if verbose
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
- puts 'Creating package for upload'
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
- puts "Uploading #{files_to_upload.count} files."
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
- puts "Transferring tagged stuff - #{tag}"
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
- puts JSON.pretty_generate(objects)
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
- puts "Inviting #{email}, role: #{role}"
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
- puts title
1306
- puts GoodData::Helpers.underline(title)
1307
- puts
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
- puts t
1314
- puts GoodData::Helpers.underline(t)
1315
- puts "Size - #{count} rows"
1316
- puts "#{dataset.attributes_and_anchors.count} attributes, #{dataset.facts.count} facts, #{dataset.references.count} references"
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
- puts "Replacing #{key}"
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
- puts "Found #{local_metrics.count} metrics"
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
- puts "Found #{contexts.count} dashboard saved views"
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
- puts "Error occured when executing MAQL, project: \"#{project.title}\" reason: \"#{e.message}\", chunks: #{replaced_maql_chunks.inspect}"
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
- puts "Error occured when executing MAQL, project: \"#{project.title}\" reason: \"#{e.message}\", chunks: #{ca_chunks.inspect}"
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
- is_dataload_process = Process[process_id, project: project, client: c].type == :dataload
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
- fail 'Executable has to be provided' if executable.blank?
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]]
@@ -194,8 +194,8 @@ module GoodData
194
194
 
195
195
  def disconnect
196
196
  if stats_on?
197
- puts "API call statistics to server #{@connection.server}"
198
- puts @connection.stats_table
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
- puts "Getting resource '#{res_name}'"
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(get('/gdc/app/account/bootstrap')['bootstrapResource']['accountSetting']['links']['self'])
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/app/account/bootstrap')['bootstrapResource']
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
- puts e.message
296
+ GoodData.logger.error(e.message)
297
297
  raise e
298
298
  end
299
299
  end
@@ -6,14 +6,24 @@
6
6
 
7
7
  # GoodData Module
8
8
  module GoodData
9
- VERSION = '1.3.3'
9
+ VERSION = File.read('SDK_VERSION')
10
+ BRICKS_VERSION = File.read('VERSION')
10
11
 
11
12
  class << self
12
- # Version
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.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: 2018-11-23 00:00:00.000000000 Z
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: '3.5'
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: '3.5'
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