pulp_npm_client 0.1.0a1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +157 -0
  4. data/Rakefile +10 -0
  5. data/docs/AsyncOperationResponse.md +17 -0
  6. data/docs/ContentPackagesApi.md +208 -0
  7. data/docs/ContentSummary.md +21 -0
  8. data/docs/ContentSummaryResponse.md +21 -0
  9. data/docs/DistributionsNpmApi.md +364 -0
  10. data/docs/NpmNpmDistribution.md +25 -0
  11. data/docs/NpmNpmDistributionResponse.md +31 -0
  12. data/docs/NpmNpmRemote.md +37 -0
  13. data/docs/NpmNpmRemoteResponse.md +43 -0
  14. data/docs/NpmNpmRepository.md +21 -0
  15. data/docs/NpmNpmRepositoryResponse.md +29 -0
  16. data/docs/NpmPackage.md +27 -0
  17. data/docs/NpmPackageResponse.md +27 -0
  18. data/docs/PaginatedRepositoryVersionResponseList.md +23 -0
  19. data/docs/PaginatednpmNpmDistributionResponseList.md +23 -0
  20. data/docs/PaginatednpmNpmRemoteResponseList.md +23 -0
  21. data/docs/PaginatednpmNpmRepositoryResponseList.md +23 -0
  22. data/docs/PaginatednpmPackageResponseList.md +23 -0
  23. data/docs/PatchednpmNpmDistribution.md +25 -0
  24. data/docs/PatchednpmNpmRemote.md +37 -0
  25. data/docs/PatchednpmNpmRepository.md +21 -0
  26. data/docs/PolicyEnum.md +16 -0
  27. data/docs/PulpNpmPackagesApi.md +60 -0
  28. data/docs/RemotesNpmApi.md +368 -0
  29. data/docs/RepositoriesNpmApi.md +468 -0
  30. data/docs/RepositoriesNpmVersionsApi.md +271 -0
  31. data/docs/RepositoryAddRemoveContent.md +21 -0
  32. data/docs/RepositorySyncURL.md +19 -0
  33. data/docs/RepositoryVersion.md +17 -0
  34. data/docs/RepositoryVersionResponse.md +25 -0
  35. data/git_push.sh +58 -0
  36. data/lib/pulp_npm_client.rb +69 -0
  37. data/lib/pulp_npm_client/api/content_packages_api.rb +264 -0
  38. data/lib/pulp_npm_client/api/distributions_npm_api.rb +445 -0
  39. data/lib/pulp_npm_client/api/pulp_npm_packages_api.rb +86 -0
  40. data/lib/pulp_npm_client/api/remotes_npm_api.rb +451 -0
  41. data/lib/pulp_npm_client/api/repositories_npm_api.rb +573 -0
  42. data/lib/pulp_npm_client/api/repositories_npm_versions_api.rb +339 -0
  43. data/lib/pulp_npm_client/api_client.rb +402 -0
  44. data/lib/pulp_npm_client/api_error.rb +57 -0
  45. data/lib/pulp_npm_client/configuration.rb +243 -0
  46. data/lib/pulp_npm_client/models/async_operation_response.rb +213 -0
  47. data/lib/pulp_npm_client/models/content_summary.rb +240 -0
  48. data/lib/pulp_npm_client/models/content_summary_response.rb +240 -0
  49. data/lib/pulp_npm_client/models/npm_npm_distribution.rb +261 -0
  50. data/lib/pulp_npm_client/models/npm_npm_distribution_response.rb +290 -0
  51. data/lib/pulp_npm_client/models/npm_npm_remote.rb +339 -0
  52. data/lib/pulp_npm_client/models/npm_npm_remote_response.rb +368 -0
  53. data/lib/pulp_npm_client/models/npm_npm_repository.rb +234 -0
  54. data/lib/pulp_npm_client/models/npm_npm_repository_response.rb +271 -0
  55. data/lib/pulp_npm_client/models/npm_package.rb +270 -0
  56. data/lib/pulp_npm_client/models/npm_package_response.rb +269 -0
  57. data/lib/pulp_npm_client/models/paginated_repository_version_response_list.rb +237 -0
  58. data/lib/pulp_npm_client/models/paginatednpm_npm_distribution_response_list.rb +237 -0
  59. data/lib/pulp_npm_client/models/paginatednpm_npm_remote_response_list.rb +237 -0
  60. data/lib/pulp_npm_client/models/paginatednpm_npm_repository_response_list.rb +237 -0
  61. data/lib/pulp_npm_client/models/paginatednpm_package_response_list.rb +237 -0
  62. data/lib/pulp_npm_client/models/patchednpm_npm_distribution.rb +251 -0
  63. data/lib/pulp_npm_client/models/patchednpm_npm_remote.rb +329 -0
  64. data/lib/pulp_npm_client/models/patchednpm_npm_repository.rb +229 -0
  65. data/lib/pulp_npm_client/models/policy_enum.rb +37 -0
  66. data/lib/pulp_npm_client/models/repository_add_remove_content.rb +232 -0
  67. data/lib/pulp_npm_client/models/repository_sync_url.rb +220 -0
  68. data/lib/pulp_npm_client/models/repository_version.rb +208 -0
  69. data/lib/pulp_npm_client/models/repository_version_response.rb +246 -0
  70. data/lib/pulp_npm_client/version.rb +15 -0
  71. data/pulp_npm_client.gemspec +39 -0
  72. data/spec/api/content_packages_api_spec.rb +87 -0
  73. data/spec/api/distributions_npm_api_spec.rb +121 -0
  74. data/spec/api/pulp_npm_packages_api_spec.rb +48 -0
  75. data/spec/api/remotes_npm_api_spec.rb +123 -0
  76. data/spec/api/repositories_npm_api_spec.rb +143 -0
  77. data/spec/api/repositories_npm_versions_api_spec.rb +104 -0
  78. data/spec/api_client_spec.rb +188 -0
  79. data/spec/configuration_spec.rb +42 -0
  80. data/spec/models/async_operation_response_spec.rb +41 -0
  81. data/spec/models/content_summary_response_spec.rb +53 -0
  82. data/spec/models/content_summary_spec.rb +53 -0
  83. data/spec/models/npm_npm_distribution_response_spec.rb +83 -0
  84. data/spec/models/npm_npm_distribution_spec.rb +65 -0
  85. data/spec/models/npm_npm_remote_response_spec.rb +119 -0
  86. data/spec/models/npm_npm_remote_spec.rb +101 -0
  87. data/spec/models/npm_npm_repository_response_spec.rb +77 -0
  88. data/spec/models/npm_npm_repository_spec.rb +53 -0
  89. data/spec/models/npm_package_response_spec.rb +71 -0
  90. data/spec/models/npm_package_spec.rb +71 -0
  91. data/spec/models/paginated_repository_version_response_list_spec.rb +59 -0
  92. data/spec/models/paginatednpm_npm_distribution_response_list_spec.rb +59 -0
  93. data/spec/models/paginatednpm_npm_remote_response_list_spec.rb +59 -0
  94. data/spec/models/paginatednpm_npm_repository_response_list_spec.rb +59 -0
  95. data/spec/models/paginatednpm_package_response_list_spec.rb +59 -0
  96. data/spec/models/patchednpm_npm_distribution_spec.rb +65 -0
  97. data/spec/models/patchednpm_npm_remote_spec.rb +101 -0
  98. data/spec/models/patchednpm_npm_repository_spec.rb +53 -0
  99. data/spec/models/policy_enum_spec.rb +35 -0
  100. data/spec/models/repository_add_remove_content_spec.rb +53 -0
  101. data/spec/models/repository_sync_url_spec.rb +47 -0
  102. data/spec/models/repository_version_response_spec.rb +65 -0
  103. data/spec/models/repository_version_spec.rb +41 -0
  104. data/spec/spec_helper.rb +111 -0
  105. metadata +233 -0
@@ -0,0 +1,111 @@
1
+ =begin
2
+ #Pulp 3 API
3
+
4
+ #Fetch, Upload, Organize, and Distribute Software Packages
5
+
6
+ The version of the OpenAPI document: v3
7
+ Contact: pulp-list@redhat.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.2.3
10
+
11
+ =end
12
+
13
+ # load the gem
14
+ require 'pulp_npm_client'
15
+
16
+ # The following was generated by the `rspec --init` command. Conventionally, all
17
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
18
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
19
+ # this file to always be loaded, without a need to explicitly require it in any
20
+ # files.
21
+ #
22
+ # Given that it is always loaded, you are encouraged to keep this file as
23
+ # light-weight as possible. Requiring heavyweight dependencies from this file
24
+ # will add to the boot time of your test suite on EVERY test run, even for an
25
+ # individual file that may not need all of that loaded. Instead, consider making
26
+ # a separate helper file that requires the additional dependencies and performs
27
+ # the additional setup, and require it from the spec files that actually need
28
+ # it.
29
+ #
30
+ # The `.rspec` file also contains a few flags that are not defaults but that
31
+ # users commonly want.
32
+ #
33
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
34
+ RSpec.configure do |config|
35
+ # rspec-expectations config goes here. You can use an alternate
36
+ # assertion/expectation library such as wrong or the stdlib/minitest
37
+ # assertions if you prefer.
38
+ config.expect_with :rspec do |expectations|
39
+ # This option will default to `true` in RSpec 4. It makes the `description`
40
+ # and `failure_message` of custom matchers include text for helper methods
41
+ # defined using `chain`, e.g.:
42
+ # be_bigger_than(2).and_smaller_than(4).description
43
+ # # => "be bigger than 2 and smaller than 4"
44
+ # ...rather than:
45
+ # # => "be bigger than 2"
46
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
47
+ end
48
+
49
+ # rspec-mocks config goes here. You can use an alternate test double
50
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
51
+ config.mock_with :rspec do |mocks|
52
+ # Prevents you from mocking or stubbing a method that does not exist on
53
+ # a real object. This is generally recommended, and will default to
54
+ # `true` in RSpec 4.
55
+ mocks.verify_partial_doubles = true
56
+ end
57
+
58
+ # The settings below are suggested to provide a good initial experience
59
+ # with RSpec, but feel free to customize to your heart's content.
60
+ =begin
61
+ # These two settings work together to allow you to limit a spec run
62
+ # to individual examples or groups you care about by tagging them with
63
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
64
+ # get run.
65
+ config.filter_run :focus
66
+ config.run_all_when_everything_filtered = true
67
+
68
+ # Allows RSpec to persist some state between runs in order to support
69
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
70
+ # you configure your source control system to ignore this file.
71
+ config.example_status_persistence_file_path = "spec/examples.txt"
72
+
73
+ # Limits the available syntax to the non-monkey patched syntax that is
74
+ # recommended. For more details, see:
75
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
76
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
77
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
78
+ config.disable_monkey_patching!
79
+
80
+ # This setting enables warnings. It's recommended, but in some cases may
81
+ # be too noisy due to issues in dependencies.
82
+ config.warnings = true
83
+
84
+ # Many RSpec users commonly either run the entire suite or an individual
85
+ # file, and it's useful to allow more verbose output when running an
86
+ # individual spec file.
87
+ if config.files_to_run.one?
88
+ # Use the documentation formatter for detailed output,
89
+ # unless a formatter has already been configured
90
+ # (e.g. via a command-line flag).
91
+ config.default_formatter = 'doc'
92
+ end
93
+
94
+ # Print the 10 slowest examples and example groups at the
95
+ # end of the spec run, to help surface which specs are running
96
+ # particularly slow.
97
+ config.profile_examples = 10
98
+
99
+ # Run specs in random order to surface order dependencies. If you find an
100
+ # order dependency and want to debug it, you can fix the order by providing
101
+ # the seed, which is printed after each run.
102
+ # --seed 1234
103
+ config.order = :random
104
+
105
+ # Seed global randomization in this process using the `--seed` CLI option.
106
+ # Setting this allows you to use `--seed` to deterministically reproduce
107
+ # test failures related to randomization by passing the same `--seed` value
108
+ # as the one that triggered the failure.
109
+ Kernel.srand config.seed
110
+ =end
111
+ end
metadata ADDED
@@ -0,0 +1,233 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pulp_npm_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0a1
5
+ platform: ruby
6
+ authors:
7
+ - OpenAPI-Generator
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-11-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.14.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.14.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.0
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '2.1'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.1.0
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 3.6.0
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '3.6'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 3.6.0
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.6'
67
+ description: Fetch, Upload, Organize, and Distribute Software Packages
68
+ email:
69
+ - pulp-list@redhat.com
70
+ executables: []
71
+ extensions: []
72
+ extra_rdoc_files: []
73
+ files:
74
+ - Gemfile
75
+ - README.md
76
+ - Rakefile
77
+ - docs/AsyncOperationResponse.md
78
+ - docs/ContentPackagesApi.md
79
+ - docs/ContentSummary.md
80
+ - docs/ContentSummaryResponse.md
81
+ - docs/DistributionsNpmApi.md
82
+ - docs/NpmNpmDistribution.md
83
+ - docs/NpmNpmDistributionResponse.md
84
+ - docs/NpmNpmRemote.md
85
+ - docs/NpmNpmRemoteResponse.md
86
+ - docs/NpmNpmRepository.md
87
+ - docs/NpmNpmRepositoryResponse.md
88
+ - docs/NpmPackage.md
89
+ - docs/NpmPackageResponse.md
90
+ - docs/PaginatedRepositoryVersionResponseList.md
91
+ - docs/PaginatednpmNpmDistributionResponseList.md
92
+ - docs/PaginatednpmNpmRemoteResponseList.md
93
+ - docs/PaginatednpmNpmRepositoryResponseList.md
94
+ - docs/PaginatednpmPackageResponseList.md
95
+ - docs/PatchednpmNpmDistribution.md
96
+ - docs/PatchednpmNpmRemote.md
97
+ - docs/PatchednpmNpmRepository.md
98
+ - docs/PolicyEnum.md
99
+ - docs/PulpNpmPackagesApi.md
100
+ - docs/RemotesNpmApi.md
101
+ - docs/RepositoriesNpmApi.md
102
+ - docs/RepositoriesNpmVersionsApi.md
103
+ - docs/RepositoryAddRemoveContent.md
104
+ - docs/RepositorySyncURL.md
105
+ - docs/RepositoryVersion.md
106
+ - docs/RepositoryVersionResponse.md
107
+ - git_push.sh
108
+ - lib/pulp_npm_client.rb
109
+ - lib/pulp_npm_client/api/content_packages_api.rb
110
+ - lib/pulp_npm_client/api/distributions_npm_api.rb
111
+ - lib/pulp_npm_client/api/pulp_npm_packages_api.rb
112
+ - lib/pulp_npm_client/api/remotes_npm_api.rb
113
+ - lib/pulp_npm_client/api/repositories_npm_api.rb
114
+ - lib/pulp_npm_client/api/repositories_npm_versions_api.rb
115
+ - lib/pulp_npm_client/api_client.rb
116
+ - lib/pulp_npm_client/api_error.rb
117
+ - lib/pulp_npm_client/configuration.rb
118
+ - lib/pulp_npm_client/models/async_operation_response.rb
119
+ - lib/pulp_npm_client/models/content_summary.rb
120
+ - lib/pulp_npm_client/models/content_summary_response.rb
121
+ - lib/pulp_npm_client/models/npm_npm_distribution.rb
122
+ - lib/pulp_npm_client/models/npm_npm_distribution_response.rb
123
+ - lib/pulp_npm_client/models/npm_npm_remote.rb
124
+ - lib/pulp_npm_client/models/npm_npm_remote_response.rb
125
+ - lib/pulp_npm_client/models/npm_npm_repository.rb
126
+ - lib/pulp_npm_client/models/npm_npm_repository_response.rb
127
+ - lib/pulp_npm_client/models/npm_package.rb
128
+ - lib/pulp_npm_client/models/npm_package_response.rb
129
+ - lib/pulp_npm_client/models/paginated_repository_version_response_list.rb
130
+ - lib/pulp_npm_client/models/paginatednpm_npm_distribution_response_list.rb
131
+ - lib/pulp_npm_client/models/paginatednpm_npm_remote_response_list.rb
132
+ - lib/pulp_npm_client/models/paginatednpm_npm_repository_response_list.rb
133
+ - lib/pulp_npm_client/models/paginatednpm_package_response_list.rb
134
+ - lib/pulp_npm_client/models/patchednpm_npm_distribution.rb
135
+ - lib/pulp_npm_client/models/patchednpm_npm_remote.rb
136
+ - lib/pulp_npm_client/models/patchednpm_npm_repository.rb
137
+ - lib/pulp_npm_client/models/policy_enum.rb
138
+ - lib/pulp_npm_client/models/repository_add_remove_content.rb
139
+ - lib/pulp_npm_client/models/repository_sync_url.rb
140
+ - lib/pulp_npm_client/models/repository_version.rb
141
+ - lib/pulp_npm_client/models/repository_version_response.rb
142
+ - lib/pulp_npm_client/version.rb
143
+ - pulp_npm_client.gemspec
144
+ - spec/api/content_packages_api_spec.rb
145
+ - spec/api/distributions_npm_api_spec.rb
146
+ - spec/api/pulp_npm_packages_api_spec.rb
147
+ - spec/api/remotes_npm_api_spec.rb
148
+ - spec/api/repositories_npm_api_spec.rb
149
+ - spec/api/repositories_npm_versions_api_spec.rb
150
+ - spec/api_client_spec.rb
151
+ - spec/configuration_spec.rb
152
+ - spec/models/async_operation_response_spec.rb
153
+ - spec/models/content_summary_response_spec.rb
154
+ - spec/models/content_summary_spec.rb
155
+ - spec/models/npm_npm_distribution_response_spec.rb
156
+ - spec/models/npm_npm_distribution_spec.rb
157
+ - spec/models/npm_npm_remote_response_spec.rb
158
+ - spec/models/npm_npm_remote_spec.rb
159
+ - spec/models/npm_npm_repository_response_spec.rb
160
+ - spec/models/npm_npm_repository_spec.rb
161
+ - spec/models/npm_package_response_spec.rb
162
+ - spec/models/npm_package_spec.rb
163
+ - spec/models/paginated_repository_version_response_list_spec.rb
164
+ - spec/models/paginatednpm_npm_distribution_response_list_spec.rb
165
+ - spec/models/paginatednpm_npm_remote_response_list_spec.rb
166
+ - spec/models/paginatednpm_npm_repository_response_list_spec.rb
167
+ - spec/models/paginatednpm_package_response_list_spec.rb
168
+ - spec/models/patchednpm_npm_distribution_spec.rb
169
+ - spec/models/patchednpm_npm_remote_spec.rb
170
+ - spec/models/patchednpm_npm_repository_spec.rb
171
+ - spec/models/policy_enum_spec.rb
172
+ - spec/models/repository_add_remove_content_spec.rb
173
+ - spec/models/repository_sync_url_spec.rb
174
+ - spec/models/repository_version_response_spec.rb
175
+ - spec/models/repository_version_spec.rb
176
+ - spec/spec_helper.rb
177
+ homepage: https://openapi-generator.tech
178
+ licenses:
179
+ - GPL-2.0+
180
+ metadata: {}
181
+ post_install_message:
182
+ rdoc_options: []
183
+ require_paths:
184
+ - lib
185
+ required_ruby_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '1.9'
190
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">"
193
+ - !ruby/object:Gem::Version
194
+ version: 1.3.1
195
+ requirements: []
196
+ rubygems_version: 3.0.3
197
+ signing_key:
198
+ specification_version: 4
199
+ summary: Pulp 3 API Ruby Gem
200
+ test_files:
201
+ - spec/api/pulp_npm_packages_api_spec.rb
202
+ - spec/api/remotes_npm_api_spec.rb
203
+ - spec/api/repositories_npm_api_spec.rb
204
+ - spec/api/content_packages_api_spec.rb
205
+ - spec/api/distributions_npm_api_spec.rb
206
+ - spec/api/repositories_npm_versions_api_spec.rb
207
+ - spec/api_client_spec.rb
208
+ - spec/configuration_spec.rb
209
+ - spec/models/paginatednpm_npm_repository_response_list_spec.rb
210
+ - spec/models/patchednpm_npm_remote_spec.rb
211
+ - spec/models/content_summary_spec.rb
212
+ - spec/models/repository_add_remove_content_spec.rb
213
+ - spec/models/paginated_repository_version_response_list_spec.rb
214
+ - spec/models/content_summary_response_spec.rb
215
+ - spec/models/npm_npm_distribution_response_spec.rb
216
+ - spec/models/repository_version_response_spec.rb
217
+ - spec/models/npm_npm_distribution_spec.rb
218
+ - spec/models/paginatednpm_npm_remote_response_list_spec.rb
219
+ - spec/models/npm_npm_remote_spec.rb
220
+ - spec/models/npm_npm_remote_response_spec.rb
221
+ - spec/models/paginatednpm_npm_distribution_response_list_spec.rb
222
+ - spec/models/repository_version_spec.rb
223
+ - spec/models/policy_enum_spec.rb
224
+ - spec/models/npm_npm_repository_spec.rb
225
+ - spec/models/async_operation_response_spec.rb
226
+ - spec/models/patchednpm_npm_repository_spec.rb
227
+ - spec/models/npm_package_spec.rb
228
+ - spec/models/npm_npm_repository_response_spec.rb
229
+ - spec/models/paginatednpm_package_response_list_spec.rb
230
+ - spec/models/patchednpm_npm_distribution_spec.rb
231
+ - spec/models/repository_sync_url_spec.rb
232
+ - spec/models/npm_package_response_spec.rb
233
+ - spec/spec_helper.rb