Module: ConvenientService::Dependencies::Queries

Extended by:
Queries
Included in:
ConvenientService::Dependencies, Queries
Defined in:
lib/convenient_service/dependencies/queries.rb,
lib/convenient_service/dependencies/queries/ruby.rb,
lib/convenient_service/dependencies/queries/version.rb,
lib/convenient_service/dependencies/queries/gems/paint.rb,
lib/convenient_service/dependencies/queries/gems/rspec.rb,
lib/convenient_service/dependencies/queries/gems/logger.rb,
lib/convenient_service/dependencies/queries/gems/active_model.rb,
lib/convenient_service/dependencies/queries/version/null_version.rb

Defined Under Namespace

Modules: Gems Classes: Ruby, Version

Instance Method Summary collapse

Instance Method Details

#active_modelConvenientService::Dependencies::Queries::Gems::ActiveModel

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



600
601
602
# File 'lib/convenient_service/dependencies/queries.rb', line 600

def active_model
  Gems::ActiveModel
end

#appraisal_nameString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (String)


645
646
647
# File 'lib/convenient_service/dependencies/queries.rb', line 645

def appraisal_name
  ::ENV["APPRAISAL_NAME"].to_s
end

#appraisal_name_for_coverageString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (String)


657
658
659
# File 'lib/convenient_service/dependencies/queries.rb', line 657

def appraisal_name_for_coverage
  appraisal_name.empty? ? "without_appraisal" : appraisal_name
end

#loggerConvenientService::Dependencies::Queries::Gems::Logger

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



609
610
611
# File 'lib/convenient_service/dependencies/queries.rb', line 609

def logger
  Gems::Logger
end

#paintConvenientService::Dependencies::Queries::Gems::Paint

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



618
619
620
# File 'lib/convenient_service/dependencies/queries.rb', line 618

def paint
  Gems::Paint
end

#require_active_model_validations_standard_config_optionBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


276
277
278
# File 'lib/convenient_service/dependencies/queries.rb', line 276

def require_active_model_validations_standard_config_option
  require_has_j_send_result_params_validations_using_active_model_validations_plugin
end

#require_aliasBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


85
86
87
# File 'lib/convenient_service/dependencies/queries.rb', line 85

def require_alias
  ::Object.const_set(:CS, ::ConvenientService)
end

#require_amazing_print_inspect_standard_config_optionBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/convenient_service/dependencies/queries.rb', line 141

def require_amazing_print_inspect_standard_config_option
  ##
  # - https://github.com/amazing-print/amazing_print
  #
  require "amazing_print"

  require "convenient_service/service/plugins/has_amazing_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_amazing_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/data/plugins/has_amazing_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/message/plugins/has_amazing_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/has_amazing_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/plugins/has_amazing_print_inspect"
  require "convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_amazing_print_inspect"
end

#require_assigns_attributes_in_constructor_using_active_model_attribute_assignment_pluginBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


94
95
96
97
98
99
100
101
102
103
# File 'lib/convenient_service/dependencies/queries.rb', line 94

def require_assigns_attributes_in_constructor_using_active_model_attribute_assignment_plugin
  ##
  # - https://edgeguides.rubyonrails.org/active_model_basics.html
  # - https://api.rubyonrails.org/classes/ActiveModel.html
  # - https://github.com/rails/rails/tree/main/activemodel
  #
  require "active_model"

  require "convenient_service/common/plugins/assigns_attributes_in_constructor/using_active_model_attribute_assignment"
end

#require_assigns_attributes_in_constructor_using_dry_initializer_pluginBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


110
111
112
113
114
115
116
117
118
# File 'lib/convenient_service/dependencies/queries.rb', line 110

def require_assigns_attributes_in_constructor_using_dry_initializer_plugin
  ##
  # - https://dry-rb.org/gems/dry-initializer/main
  # - https://github.com/dry-rb/dry-initializer
  #
  require "dry-initializer"

  require "convenient_service/common/plugins/assigns_attributes_in_constructor/using_dry_initializer"
end

#require_awesome_print_inspect_standard_config_optionBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Loads a config that patches services to use Awesome Print to generate colored inspect strings. Useful for debugging. Works as expected for byebug and pry.

Has issues with escaping colors for binding.break and irb. There is a workaround in the examples, but its possible negative outcome has not been investigated yet. Use it at your own risk.

Examples:

:awesome_print_inspect output for byebug or pry.

class Service
  include ::ConvenientService::Standard::Config.with(:awesome_print_inspect)

  def result
    success(foo: :bar)
  end
end

Service.result
# =>
{
  :ConvenientService => {
         :entity => "Result",
        :service => "Service",
         :status => :success,
      :data_keys => [
          [0] :foo
      ]
  }
}

:awesome_print_inspect output for binding.break or irb.


class Service
  include ::ConvenientService::Standard::Config.with(:awesome_print_inspect)

  def result
    success(foo: :bar)
  end
end

Service.result
# =>
{
  :ConvenientService^[[0;37m => ^[[0m{
         :entity^[[0;37m => ^[[0m^[[0;33m"Result"^[[0m,
        :service^[[0;37m => ^[[0m^[[0;33m"Service"^[[0m,
         :status^[[0;37m => ^[[0m^[[0;36m:success^[[0m,
      :data_keys^[[0;37m => ^[[0m[
          ^[[1;37m[0] ^[[0m^[[0;36m:foo^[[0m
      ]
    }
}

:awesome_print_inspect output for binding.break or irb with Reline hack.


class Service
  include ::ConvenientService::Standard::Config.with(:awesome_print_inspect)

  def result
    success(foo: :bar)
  end
end

class Reline::Unicode
  def self.escape_for_print(str)
    str
  end
end

Service.result
# =>
{
  :ConvenientService => {
         :entity => "Result",
        :service => "Service",
         :status => :success,
      :data_keys => [
          [0] :foo
      ]
  }
}

Returns:

  • (Boolean)

See Also:



247
248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/convenient_service/dependencies/queries.rb', line 247

def require_awesome_print_inspect_standard_config_option
  ##
  # - https://github.com/awesome-print/awesome_print
  #
  require "awesome_print"

  require "convenient_service/service/plugins/has_awesome_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_awesome_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/data/plugins/has_awesome_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/message/plugins/has_awesome_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/status/plugins/has_awesome_print_inspect"
  require "convenient_service/service/plugins/has_j_send_result/entities/result/plugins/has_j_send_status_and_attributes/entities/code/plugins/has_awesome_print_inspect"
  require "convenient_service/service/plugins/can_have_steps/entities/step/plugins/has_awesome_print_inspect"
end

#require_development_tools(amazing_print: false, awesome_print: true) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Note:

Expected to be called from irb, pry, spec_helper.rb, etc.

Returns:

  • (Boolean)


358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
# File 'lib/convenient_service/dependencies/queries.rb', line 358

def require_development_tools(amazing_print: false, awesome_print: true)
  ##
  # - https://github.com/awesome-print/awesome_print
  #
  require "awesome_print" if awesome_print

  ##
  # - https://github.com/amazing-print/amazing_print
  #
  require "amazing_print" if amazing_print

  ##
  # - https://github.com/gsamokovarov/break
  #
  require "break"

  ##
  # - https://github.com/deivid-rodriguez/byebug
  #
  require "byebug" if support_byebug?

  ##
  # - https://github.com/ruby/debug
  #
  require "debug" if ruby.mri?

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/ostruct/rdoc/OpenStruct.html
  # - https://github.com/ruby/ostruct
  #
  require "ostruct"

  ##
  # - https://github.com/janlelis/paint
  #
  require "paint"

  ##
  # - https://github.com/rouge-ruby/rouge
  #
  require "rouge"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/tempfile/rdoc/Tempfile.html
  # - https://github.com/ruby/tempfile
  #
  require "tempfile"

  ##
  # - https://gist.github.com/marian13/5dade20a431d7254db30e543167058ce
  #
  require "convenient_service/dependencies/extractions/byebug_syntax_highlighting" if support_byebug?

  ##
  #
  #
  require "convenient_service/dependencies/extractions/b" if support_byebug?

  ##
  #
  #
  require "convenient_service/dependencies/extractions/bb" if ruby.mri?

  ##
  #
  #
  require "convenient_service/dependencies/extractions/ce"

  ##
  #
  #
  require "convenient_service/dependencies/extractions/ds"
end

#require_dry_examples(version: "") ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Loads dry config examples.

Parameters:

  • version (String) (defaults to: "")

Returns:

  • (Boolean)


556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
# File 'lib/convenient_service/dependencies/queries.rb', line 556

def require_dry_examples(version: "")
  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html
  # - https://github.com/flori/json
  #
  require "json"

  ##
  # - https://github.com/jfelchner/ruby-progressbar
  #
  require "progressbar"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/webrick/rdoc/WEBrick.html
  # - https://github.com/ruby/webrick
  #
  require "webrick"

  require ::File.join("convenient_service", "examples", "dry", version, "gemfile")
end

#require_dry_initializer_standard_config_optionBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


267
268
269
# File 'lib/convenient_service/dependencies/queries.rb', line 267

def require_dry_initializer_standard_config_option
  require_assigns_attributes_in_constructor_using_dry_initializer_plugin
end

#require_has_attributes_using_active_model_attributes_pluginBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


125
126
127
128
129
130
131
132
133
134
# File 'lib/convenient_service/dependencies/queries.rb', line 125

def require_has_attributes_using_active_model_attributes_plugin
  ##
  # - https://edgeguides.rubyonrails.org/active_model_basics.html
  # - https://api.rubyonrails.org/classes/ActiveModel.html
  # - https://github.com/rails/rails/tree/main/activemodel
  #
  require "active_model"

  require "convenient_service/common/plugins/has_attributes/using_active_model_attributes"
end

#require_has_j_send_result_params_validations_using_active_model_validations_pluginBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



296
297
298
299
300
301
302
303
304
305
# File 'lib/convenient_service/dependencies/queries.rb', line 296

def require_has_j_send_result_params_validations_using_active_model_validations_plugin
  ##
  # - https://edgeguides.rubyonrails.org/active_model_basics.html
  # - https://api.rubyonrails.org/classes/ActiveModel.html
  # - https://github.com/rails/rails/tree/main/activemodel
  #
  require "active_model"

  require "convenient_service/service/plugins/has_j_send_result_params_validations/using_active_model_validations"
end

#require_has_j_send_result_params_validations_using_dry_validation_pluginBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


312
313
314
315
316
317
318
319
320
# File 'lib/convenient_service/dependencies/queries.rb', line 312

def require_has_j_send_result_params_validations_using_dry_validation_plugin
  ##
  # - https://dry-rb.org/gems/dry-validation/main/
  # - https://github.com/dry-rb/dry-validation
  #
  require "dry-validation"

  require "convenient_service/service/plugins/has_j_send_result_params_validations/using_dry_validation"
end

#require_has_memoization_using_memo_wise_pluginObject



322
323
324
325
326
327
328
329
# File 'lib/convenient_service/dependencies/queries.rb', line 322

def require_has_memoization_using_memo_wise_plugin
  ##
  # - https://github.com/panorama-ed/memo_wise
  #
  require "memo_wise"

  require "convenient_service/common/plugins/has_memoization/using_memo_wise"
end

#require_memo_wise_standard_config_optionBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


285
286
287
# File 'lib/convenient_service/dependencies/queries.rb', line 285

def require_memo_wise_standard_config_option
  require_has_memoization_using_memo_wise_plugin
end

#require_rails_examples(version: "") ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Loads rails config examples.

Parameters:

  • version (String) (defaults to: "")

Returns:

  • (Boolean)


527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
# File 'lib/convenient_service/dependencies/queries.rb', line 527

def require_rails_examples(version: "")
  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html
  # - https://github.com/flori/json
  #
  require "json"

  ##
  # - https://github.com/jfelchner/ruby-progressbar
  #
  require "progressbar"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/webrick/rdoc/WEBrick.html
  # - https://github.com/ruby/webrick
  #
  require "webrick"

  require ::File.join("convenient_service", "examples", "rails", version, "gemfile")
end

#require_rspec_extentionsBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Note:

Expected to be called from spec_helper.rb.

Loads RSpec extensions like be_success matcher, stub_service helper, etc.

Returns:

  • (Boolean)


465
466
467
468
469
470
471
# File 'lib/convenient_service/dependencies/queries.rb', line 465

def require_rspec_extentions
  require "rspec/expectations"
  require "rspec/matchers"
  require "rspec/mocks"

  require "convenient_service/rspec"
end

#require_standard_examples(version: "") ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Loads standard config examples.

Parameters:

  • version (String) (defaults to: "")

Returns:

  • (Boolean)


481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
# File 'lib/convenient_service/dependencies/queries.rb', line 481

def require_standard_examples(version: "")
  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/date/rdoc/Date.html
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/date/rdoc/DateTime.html
  # - https://github.com/ruby/date
  #
  require "date"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html
  # - https://github.com/flori/json
  #
  require "json"

  ##
  # - https://github.com/jfelchner/ruby-progressbar
  #
  require "progressbar"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/webrick/rdoc/WEBrick.html
  # - https://github.com/ruby/webrick
  #
  require "webrick"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/uri/rdoc/URI.html
  # - https://github.com/ruby/uri
  #
  require "uri"

  require ::File.join("convenient_service", "examples", "standard", version, "cowsay")
  require ::File.join("convenient_service", "examples", "standard", version, "date_time")
  require ::File.join("convenient_service", "examples", "standard", version, "factorial")
  require ::File.join("convenient_service", "examples", "standard", version, "gemfile")
  require ::File.join("convenient_service", "examples", "standard", version, "request_params")
end

#require_test_toolsBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Note:

Expected to be called from spec_helper.rb.

Returns:

  • (Boolean)


438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# File 'lib/convenient_service/dependencies/queries.rb', line 438

def require_test_tools
  ##
  # - https://github.com/faker-ruby/faker
  #
  require "faker"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/ostruct/rdoc/OpenStruct.html
  # - https://github.com/ruby/ostruct
  #
  require "ostruct"

  ##
  # - https://ruby-doc.org/stdlib-2.7.0/libdoc/tempfile/rdoc/Tempfile.html
  # - https://github.com/ruby/tempfile
  #
  require "tempfile"
end

#require_wraps_result_in_db_transaction_using_active_record_base_transaction_pluginBoolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


336
337
338
339
340
341
342
343
344
345
# File 'lib/convenient_service/dependencies/queries.rb', line 336

def require_wraps_result_in_db_transaction_using_active_record_base_transaction_plugin
  ##
  # - https://edgeguides.rubyonrails.org/active_record_basics.html
  # - https://api.rubyonrails.org/classes/ActiveRecord.html
  # - https://github.com/rails/rails/tree/main/activerecord
  #
  require "active_record"

  require "convenient_service/service/plugins/wraps_result_in_db_transaction/using_active_record_base_transaction"
end

#rspecConvenientService::Dependencies::Queries::RSpec

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (ConvenientService::Dependencies::Queries::RSpec)


591
592
593
# File 'lib/convenient_service/dependencies/queries.rb', line 591

def rspec
  Gems::RSpec
end

#rubyConvenientService::Dependencies::Queries::Ruby

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



582
583
584
# File 'lib/convenient_service/dependencies/queries.rb', line 582

def ruby
  Ruby
end

#support_byebug?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



52
53
54
# File 'lib/convenient_service/dependencies/queries.rb', line 52

def support_byebug?
  ruby.mri? && ruby.version < 3.5
end

#support_has_j_send_result_params_validations_using_active_model_validations_plugin?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

See Also:

  • ConvenientService.Dependencies.require_has_j_send_result_params_validations_using_active_model_validations_plugin


62
63
64
65
66
67
# File 'lib/convenient_service/dependencies/queries.rb', line 62

def support_has_j_send_result_params_validations_using_active_model_validations_plugin?
  return false unless active_model.loaded?
  return false if ruby.version >= 3.0 && active_model.version < 6.0

  true
end

#support_logger_non_integer_levels?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



76
77
78
# File 'lib/convenient_service/dependencies/queries.rb', line 76

def support_logger_non_integer_levels?
  logger.version >= "1.3.0"
end