crapi 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ffc82957409a8df0940450867c2a1325f21819f07fe90e8f3c50920fa5b18d3
4
- data.tar.gz: bc596d700607f8409166acf07dcc88c30d21e49eb70b2fdf8758be868c70a3a1
3
+ metadata.gz: '075697a77cf82734a58523c8c65c8395d754ad3e7a0a41648a5d33228e62b77e'
4
+ data.tar.gz: c5368393dd38933dd3e10ee4bb23dfc809e5ab023dbdccfa50a882d23fdf41a6
5
5
  SHA512:
6
- metadata.gz: 0ed50ee3802edc54336af81f71502b602960c7608ca2b540919ab8a9255c94f8fe77abe1e9ee28ac045ee864c47ce14dacf5bab068231050999bfa366b3c8ec1
7
- data.tar.gz: f551f92822f103927b9c47387c2fbebf2bb1fc9f74a23ea5761aa8a127ac470c299e7c5fb7e817231518969083b960e524f346317870c9cfa5cde7f9672cbbfe
6
+ metadata.gz: 9340c8ec96dd620bcd6e41388af546e2adb5b01edc331209d2f541f6229e396caece559911bbbb16879d2cd53b1ca3bf2af5cf0dbfb28ed2b5525a2892a6408a
7
+ data.tar.gz: c72ae40ed2ca9b4bcaef675e4e8326dc33e4764b9c577a10fddfbdbc52653e4458f386e363f4c5d42e04c033eb8782ca5bef0071cfd2d67f65c208a028d6130e
@@ -0,0 +1,63 @@
1
+ # Ruby CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
+ #
5
+ version: 2
6
+ jobs:
7
+ build:
8
+ docker:
9
+ # specify the version you desire here
10
+ - image: cimg/ruby:3.0
11
+
12
+ # Specify service dependencies here if necessary
13
+ # CircleCI maintains a library of pre-built images
14
+ # documented at https://circleci.com/docs/2.0/circleci-images/
15
+ # - image: circleci/postgres:9.4
16
+
17
+ working_directory: ~/repo
18
+
19
+ steps:
20
+ - checkout
21
+
22
+ # Download and cache dependencies
23
+ - restore_cache:
24
+ keys:
25
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
26
+ # fallback to using the latest cache if no exact match is found
27
+ - v1-dependencies
28
+
29
+ - run:
30
+ name: update bundler
31
+ command: |
32
+ gem install bundler --version $(tail -n 1 ~/repo/Gemfile.lock | tr -d ' ')
33
+
34
+ - run:
35
+ name: install dependencies
36
+ command: |
37
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
38
+
39
+ - save_cache:
40
+ paths:
41
+ - ./vendor/bundle
42
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
43
+
44
+ # run tests!
45
+ - run:
46
+ name: run tests
47
+ command: |
48
+ mkdir /tmp/test-results
49
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
50
+
51
+ bundle exec rspec --format progress \
52
+ --format RspecJunitFormatter \
53
+ --out /tmp/test-results/rspec.xml \
54
+ --format progress \
55
+ -- \
56
+ $TEST_FILES
57
+
58
+ # collect reports
59
+ - store_test_results:
60
+ path: /tmp/test-results
61
+ - store_artifacts:
62
+ path: /tmp/test-results
63
+ destination: test-results
data/.rubocop.yml CHANGED
@@ -1,81 +1,64 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5
3
- Include:
4
- - "**/*.rake"
5
- - "**/Gemfile"
6
- - "**/Rakefile"
7
- - "**/Capfile"
8
- - "**/Berksfile"
9
- - "**/Cheffile"
10
- Exclude:
11
- - "vendor/**/*"
12
- - "db/**/*"
13
- - "tmp/**/*"
14
- - "true/**/*"
15
- Metrics/ClassLength:
16
- Description: Avoid classes longer than 100 lines of code.
17
- Enabled: false
18
- CountComments: false
19
- Max: 100
20
- Metrics/LineLength:
21
- Description: Limit lines to 100 characters.
2
+ TargetRubyVersion: 3.0
3
+ SuggestExtensions: false
4
+ NewCops: enable
5
+
6
+
7
+ Layout/EmptyLineAfterGuardClause:
8
+ # Add empty line after guard clause.
22
9
  Enabled: false
23
- Max: 100
10
+
11
+ Layout/LineLength:
12
+ # Checks that line length does not exceed the configured limit.
13
+ Max: 150
14
+
15
+
16
+ Metrics/AbcSize:
17
+ # A calculated magnitude based on number of assignments, branches, and conditions.
18
+ Max: 30
19
+
24
20
  Metrics/BlockLength:
21
+ # Avoid long blocks with many lines.
25
22
  Exclude:
26
23
  - 'spec/**/*.rb'
27
- Metrics/MethodLength:
28
- Description: Avoid methods longer than 10 lines of code.
29
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
30
- Enabled: false
31
- CountComments: false
32
- Max: 10
33
- Metrics/AbcSize:
34
- Description: A calculated magnitude based on number of assignments, branches, and conditions.
35
- Enabled: false
36
- Max: 15
24
+
37
25
  Metrics/CyclomaticComplexity:
38
- Description: A complexity metric that is strongly correlated to the number of test cases needed to validate a method.
39
- Enabled: false
40
- Max: 6
41
- Lint/Debugger:
42
- Description: Warn in debugger entries
43
- Enabled: false
44
- Style/SymbolArray:
45
- Description: Use %i or %I for arrays of symbols.
46
- Enabled: false
47
- Style/RegexpLiteral:
48
- Description: Enforces using / or %r around regular expressions.
49
- EnforcedStyle: percent_r
26
+ # A complexity metric that is strongly correlated to the number of test cases needed to validate a method.
27
+ Max: 10
28
+
29
+ Metrics/MethodLength:
30
+ # Avoid methods longer than 25 lines of code.
31
+ Max: 25
32
+
33
+
50
34
  Style/AsciiComments:
51
- # Disabling this so we can use non-breaking spaces (' ') in documentation comments, preventing browsers from collapsing multiple spaces in code blocks.
52
- Description: This cop checks for non-ascii (non-English) characters in comments.
53
- Enabled: false
54
- Style/NumericLiterals:
55
- Description: This cop checks for big numeric literals without _ between groups of digits in them.
56
- Enabled: false
57
- Style/Documentation:
58
- Description: Document classes and non-namespace modules.
59
- Enabled: false
35
+ # Use only ASCII symbols in comments.
36
+ #
37
+ # NLC: We're allowing non-breaking spaces (' '), as they're needed to prevent
38
+ # browsers from collapsing multiple spaces in documentation code blocks.
39
+ AllowedChars:
40
+ - ' '
41
+
60
42
  Style/ClassAndModuleChildren:
61
- Description: Use nested modules/class definitions instead of compact style.
62
- Enabled: false
63
- Style/FrozenStringLiteralComment:
64
- Enabled: false
65
- Style/EmptyMethod:
43
+ # Checks style of children classes and modules.
66
44
  Enabled: false
67
- Style/StderrPuts:
68
- Enabled: true
69
- Exclude:
70
- - 'bin/**/*'
71
- Style/BlockDelimiters:
72
- Description: Check for uses of braces or do/end around single line or multi-line blocks.
73
- Enabled: true
74
- Exclude:
75
- - 'spec/**/*.rb'
76
- Style/RescueModifier:
77
- Description: This cop checks for uses of rescue in its modifier form.
45
+
46
+ Style/FetchEnvVar:
47
+ # Suggests `ENV.fetch` for the replacement of `ENV[]`.
78
48
  Enabled: false
79
- Naming/UncommunicativeMethodParamName:
80
- Description: This cop checks method parameter names for how descriptive they are.
49
+
50
+ Style/FrozenStringLiteralComment:
51
+ # Add the frozen_string_literal comment to the top of files to help transition to frozen string literals by default.
52
+ EnforcedStyle: never
53
+
54
+ Style/NumericLiterals:
55
+ # Add underscores to large numeric literals to improve their readability.
81
56
  Enabled: false
57
+
58
+ Style/RegexpLiteral:
59
+ # Use / or %r around regular expressions.
60
+ EnforcedStyle: percent_r
61
+
62
+ Style/StringLiterals:
63
+ # Check for use of ' vs ".
64
+ ConsistentQuotesInMultiline: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 3.0
data/Gemfile.lock CHANGED
@@ -1,62 +1,86 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- crapi (0.1.2)
5
- activesupport (~> 5.2.0)
4
+ crapi (0.1.3)
5
+ activesupport (>= 6.0, < 7.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (5.2.0)
10
+ activesupport (7.0.4)
11
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (>= 0.7, < 2)
13
- minitest (~> 5.1)
14
- tzinfo (~> 1.1)
15
- byebug (10.0.2)
16
- coderay (1.1.2)
17
- concurrent-ruby (1.0.5)
18
- diff-lcs (1.3)
19
- i18n (1.0.1)
12
+ i18n (>= 1.6, < 2)
13
+ minitest (>= 5.1)
14
+ tzinfo (~> 2.0)
15
+ addressable (2.8.1)
16
+ public_suffix (>= 2.0.2, < 6.0)
17
+ ast (2.4.2)
18
+ concurrent-ruby (1.1.10)
19
+ crack (0.4.5)
20
+ rexml
21
+ diff-lcs (1.5.0)
22
+ hashdiff (1.0.1)
23
+ i18n (1.12.0)
20
24
  concurrent-ruby (~> 1.0)
21
- method_source (0.9.0)
22
- minitest (5.11.3)
23
- pry (0.11.3)
24
- coderay (~> 1.1.0)
25
- method_source (~> 0.9.0)
26
- pry-byebug (3.6.0)
27
- byebug (~> 10.0)
28
- pry (~> 0.10)
29
- rake (10.5.0)
30
- rspec (3.7.0)
31
- rspec-core (~> 3.7.0)
32
- rspec-expectations (~> 3.7.0)
33
- rspec-mocks (~> 3.7.0)
34
- rspec-core (3.7.1)
35
- rspec-support (~> 3.7.0)
36
- rspec-expectations (3.7.0)
25
+ json (2.6.3)
26
+ minitest (5.16.3)
27
+ parallel (1.22.1)
28
+ parser (3.1.3.0)
29
+ ast (~> 2.4.1)
30
+ public_suffix (5.0.1)
31
+ rainbow (3.1.1)
32
+ regexp_parser (2.6.1)
33
+ rexml (3.2.5)
34
+ rspec (3.12.0)
35
+ rspec-core (~> 3.12.0)
36
+ rspec-expectations (~> 3.12.0)
37
+ rspec-mocks (~> 3.12.0)
38
+ rspec-core (3.12.0)
39
+ rspec-support (~> 3.12.0)
40
+ rspec-expectations (3.12.1)
37
41
  diff-lcs (>= 1.2.0, < 2.0)
38
- rspec-support (~> 3.7.0)
39
- rspec-mocks (3.7.0)
42
+ rspec-support (~> 3.12.0)
43
+ rspec-mocks (3.12.1)
40
44
  diff-lcs (>= 1.2.0, < 2.0)
41
- rspec-support (~> 3.7.0)
42
- rspec-support (3.7.1)
43
- rspec_junit_formatter (0.3.0)
45
+ rspec-support (~> 3.12.0)
46
+ rspec-support (3.12.0)
47
+ rspec_junit_formatter (0.6.0)
44
48
  rspec-core (>= 2, < 4, != 2.12.0)
45
- thread_safe (0.3.6)
46
- tzinfo (1.2.5)
47
- thread_safe (~> 0.1)
49
+ rubocop (1.41.1)
50
+ json (~> 2.3)
51
+ parallel (~> 1.10)
52
+ parser (>= 3.1.2.1)
53
+ rainbow (>= 2.2.2, < 4.0)
54
+ regexp_parser (>= 1.8, < 3.0)
55
+ rexml (>= 3.2.5, < 4.0)
56
+ rubocop-ast (>= 1.23.0, < 2.0)
57
+ ruby-progressbar (~> 1.7)
58
+ unicode-display_width (>= 1.4.0, < 3.0)
59
+ rubocop-ast (1.24.1)
60
+ parser (>= 3.1.1.0)
61
+ ruby-progressbar (1.11.0)
62
+ tzinfo (2.0.5)
63
+ concurrent-ruby (~> 1.0)
64
+ unicode-display_width (2.3.0)
65
+ webmock (3.18.1)
66
+ addressable (>= 2.8.0)
67
+ crack (>= 0.3.2)
68
+ hashdiff (>= 0.4.0, < 2.0.0)
69
+ webrick (1.7.0)
70
+ yard (0.9.28)
71
+ webrick (~> 1.7.0)
48
72
 
49
73
  PLATFORMS
50
- ruby
74
+ x86_64-linux
51
75
 
52
76
  DEPENDENCIES
53
- bundler (~> 1.16)
77
+ bundler (~> 2)
54
78
  crapi!
55
- pry (~> 0.11)
56
- pry-byebug (~> 3.6)
57
- rake (~> 10.0)
58
- rspec (~> 3.0)
59
- rspec_junit_formatter (~> 0.3)
79
+ rspec (~> 3)
80
+ rspec_junit_formatter
81
+ rubocop
82
+ webmock
83
+ yard
60
84
 
61
85
  BUNDLED WITH
62
- 1.16.2
86
+ 2.3.24
data/README.md CHANGED
@@ -1,8 +1,13 @@
1
- # Crapi
1
+ [![Gem Version](https://img.shields.io/github/v/release/nestor-custodio/crapi?color=green&label=gem%20version)](https://rubygems.org/gems/crapi)
2
+ [![MIT License](https://img.shields.io/github/license/nestor-custodio/crapi)](https://tldrlegal.com/license/mit-license)
2
3
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/crapi`. To experiment with that code, run `bin/console` for an interactive prompt.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ # CrAPI
6
+
7
+ CrAPI is yet another <u>Cr</u>ud <u>API</u> client wrapper. Yes, there is no shortage of these out there, but no other API wrapper gem (that I could find) provided the kind of functionality you get from the CrAPI::Proxy class, which is really the biggest benefit here.
8
+
9
+ **CrAPI::Client** will connect to the target system and handily provides a base path for you (because some APIs and services have a path that is always part of every request), **CrAPI::Proxy** lets you add to the root client's base path or default set of headers without having to create any new connections.
10
+
6
11
 
7
12
  ## Installation
8
13
 
@@ -20,20 +25,85 @@ Or install it yourself as:
20
25
 
21
26
  $ gem install crapi
22
27
 
23
- ## Usage
24
28
 
25
- TODO: Write usage instructions here
29
+ ## Using The CrAPI Tools
30
+
31
+ ### Client Usage
32
+
33
+ ```ruby
34
+ # Connect to an API.
35
+
36
+ api = CrAPI::Client.new('https://jsonplaceholder.typicode.com/')
37
+
38
+
39
+ # Issue requests against the API.
40
+
41
+ api.get('users/1') # GETs /users/1; returns a Hash.
42
+
43
+ api.get('posts', query: { userId: 2 }) # GETs /posts?userId=2; returns an Array.
44
+
45
+ mew_comment = { user: 'megapwner', text: 'FRIST!!1!' }
46
+ api.post('comments', payload: new_comment) # POSTs to /comments; returns a Hash.
47
+ ```
48
+
49
+ ---
50
+
51
+ ### Proxy Usage
52
+
53
+ ```ruby
54
+ # Connect to an API.
55
+
56
+ api = CrAPI::Client.new('https://versioned.fake-api.com/api/')
57
+
58
+
59
+ # Back in the v1 days, versioning of this API was via the URL ...
60
+
61
+ v1 = api.new_proxy('/v1')
62
+
63
+ v1.get('data') # GETs /api/v1/data; pretty straight-forward.
64
+ v1.post('data', payload: values) # POSTs *values* to /api/v1/data.
65
+
66
+
67
+ # For API v2, they switched to an Accept header approach ...
68
+
69
+ v2 = api.new_proxy('/', headers: { Accept: 'application/vnd.fake-api.v2+json' })
70
+
71
+ v2.get('data') # GETs /api/data with the v2 header.
72
+
73
+
74
+ # API v3 keeps the Accept header approach ...
75
+
76
+ v3 = api.new_proxy('/', headers: { Accept: 'application/vnd.fake-api.v3+json' })
77
+
78
+ v3.get('data') # GETs /api/data with the v3 header.
79
+
80
+
81
+ # Note that only one connection to the client is made and you can easily make
82
+ # v1, v2, and v3 API calls ad hoc without having to juggle paths/headers yourself.
83
+ ```
84
+
85
+ ---
86
+
87
+ [Consult the repo docs for the full CrAPI documentation.](http://nestor-custodio.github.io/crapi/CrAPI.html)
88
+
89
+
90
+ ## Feature Roadmap / Future Development
91
+
92
+ Additional features/options coming in the future:
93
+
94
+ - Cleaner handling of non-body-returning calls.
95
+ - More resilient serializing of non-String paylods when using custom Content-Type headers.
96
+
26
97
 
27
- ## Development
98
+ ## Contribution / Development
28
99
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
100
+ Bug reports and pull requests are welcome at: [https://github.com/nestor-custodio/crapi](https://github.com/nestor-custodio/crapi)
30
101
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
102
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
103
 
33
- ## Contributing
104
+ Linting is courtesy of [Rubocop](https://docs.rubocop.org/) (`bundle exec rubocop`) and documentation is built using [Yard](https://yardoc.org/) (`bundle exec yard`). Please ensure you have a clean bill of health from Rubocop and that any new features and/or changes to behaviour are reflected in the documentation before submitting a pull request.
34
105
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/crapi.
36
106
 
37
107
  ## License
38
108
 
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
109
+ CrAPI is available as open source under the terms of the [MIT License](https://tldrlegal.com/license/mit-license).
data/crapi.gemspec CHANGED
@@ -1,31 +1,31 @@
1
-
2
1
  lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'crapi/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
6
+ spec.required_ruby_version = ['>= 3.0', '< 3.2']
7
+
7
8
  spec.name = 'crapi'
8
- spec.version = Crapi::VERSION
9
+ spec.version = CrAPI::VERSION
9
10
  spec.authors = ['Nestor Custodio']
10
11
  spec.email = ['sakimorix@gmail.com']
11
12
 
12
13
  spec.summary = 'A simple API client with built-in segment/header proxy support. "... It could be better." ™️'
13
- spec.homepage = 'https://www.github.com/nestor-custodio/crapi'
14
+ spec.homepage = 'https://github.com/nestor-custodio/crapi'
14
15
  spec.license = 'MIT'
15
16
 
16
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
- f.match(%r{^(test|spec|features)/})
18
- end
19
- spec.bindir = 'exe'
20
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |filename| filename.start_with? 'test/' }
18
+ spec.executables = []
21
19
  spec.require_paths = ['lib']
22
20
 
23
- spec.add_development_dependency 'bundler', '~> 1.16'
24
- spec.add_development_dependency 'pry', '~> 0.11'
25
- spec.add_development_dependency 'pry-byebug', '~> 3.6'
26
- spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.0'
28
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3'
21
+ spec.metadata['rubygems_mfa_required'] = 'true'
22
+
23
+ spec.add_dependency 'activesupport', ['>= 6.0', '< 7.1']
29
24
 
30
- spec.add_dependency 'activesupport', '~> 5.2.0'
25
+ spec.add_development_dependency 'bundler', '~> 2'
26
+ spec.add_development_dependency 'rspec', '~> 3'
27
+ spec.add_development_dependency 'rspec_junit_formatter'
28
+ spec.add_development_dependency 'rubocop'
29
+ spec.add_development_dependency 'webmock'
30
+ spec.add_development_dependency 'yard'
31
31
  end
@@ -0,0 +1,142 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Exception: CrAPI::ArgumentError
8
+
9
+ &mdash; Documentation by YARD 0.9.28
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "CrAPI::ArgumentError";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (A)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../CrAPI.html" title="CrAPI (module)">CrAPI</a></span></span>
41
+ &raquo;
42
+ <span class="title">ArgumentError</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Exception: CrAPI::ArgumentError
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName"><span class='object_link'><a href="Error.html" title="CrAPI::Error (class)">Error</a></span></span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">StandardError</li>
78
+
79
+ <li class="next"><span class='object_link'><a href="Error.html" title="CrAPI::Error (class)">Error</a></span></li>
80
+
81
+ <li class="next">CrAPI::ArgumentError</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+ </dl>
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ <dl>
100
+ <dt>Defined in:</dt>
101
+ <dd>lib/crapi/errors.rb</dd>
102
+ </dl>
103
+
104
+ </div>
105
+
106
+ <h2>Overview</h2><div class="docstring">
107
+ <div class="discussion">
108
+ <p>An error relating to missing, invalid, or incompatible method arguments.</p>
109
+
110
+
111
+ </div>
112
+ </div>
113
+ <div class="tags">
114
+
115
+
116
+ </div>
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+ </div>
133
+
134
+ <div id="footer">
135
+ Generated on Mon Jan 2 15:16:45 2023 by
136
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
137
+ 0.9.28 (ruby-3.0.4).
138
+ </div>
139
+
140
+ </div>
141
+ </body>
142
+ </html>