socketry 0.5.1 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c946ff077911e96715c6ed49e1f05d68048c5ce1
4
- data.tar.gz: fc23762cd7df18e38aa1b256fa8043455d15e76c
2
+ SHA256:
3
+ metadata.gz: bb6cedf3671c482943ca47ac78560a9336a24483c8360acf69d9fc0b554ed763
4
+ data.tar.gz: 3ddc39a363c81b193a83bef5f686061f97b22c116012eb0aba573cf784580773
5
5
  SHA512:
6
- metadata.gz: b2e079c8d3765b5279a8fccaed3315ffdb18697350a248318539a0e06e366c3e1d11b8ff7806b457c1c003e91a8e35cbed0a5bb1244c64fcaae4beda73f21913
7
- data.tar.gz: 9dcc209420f1d8db8486dbd6ab89a7213689256fc3f12f1d7e82a04ff97f6fe1cc75ad35b7655bec3949a7876612ce7c72db76af14adc30223b67cf1dc415b41
6
+ metadata.gz: a1768e2f61b5471f105cebc4b694efe141c3fecd5e7d74cf209224b714f7ff15868d95b0434de9cea869f3bfa7803e213db0c4f1d4a19a519893de51915f6cc8
7
+ data.tar.gz: 2b0816ac308875a0b43703f6ffee289e59f8e575949d8edbea9156eb45c84edc0361b3823120ee2ccb19276f0c0670d2bfa3e58fd629484a8edd50df351553cd
@@ -0,0 +1,154 @@
1
+ # Configuration and Builder
2
+
3
+ Use a mutable `Configuration` and a separate `Builder` for Ruby configuration DSLs in Socketry projects. This guide defines their responsibilities, construction, file loading, and explicit freezing.
4
+
5
+ ## Design
6
+
7
+ Create the configuration first. Pass it to a builder, which applies the DSL to that same object. Return the configuration after evaluation, keeping it mutable.
8
+
9
+ - `Configuration` owns the configuration state, defaults, readers, and mutation methods. It can be configured directly through its public API.
10
+ - `Builder` provides the DSL and file-loading context. It changes the configuration through its public API. Use `Builder` as the standard name for this role, including when it loads files.
11
+ - `Configuration.build` evaluates a block through a builder and returns the configuration.
12
+ - `Configuration.load` loads files in order into one configuration and returns it.
13
+ - `Configuration#freeze` finalises the configuration when the caller chooses. `.build` and `.load` do not call it automatically.
14
+
15
+ The builder does not keep a second set of configuration values to transfer later. There is no final `Builder#build` step, `new(builder.attributes)` conversion, snapshot copying, or automatic freezing. Configuration readers belong on `Configuration`; the builder only needs its configuration reference and any DSL context such as a root directory.
16
+
17
+ Keep domain invariants in configuration mutation methods so they also apply to direct callers. The builder can translate convenient DSL arguments into those operations. Use ordinary writers for simple values and methods such as `add` for collections. A DSL method can have the same name as a configuration reader because they are on different objects.
18
+
19
+ ## Example
20
+
21
+ The classes below share a project namespace. In a gem, they can live in separate `configuration.rb` and `builder.rb` files. `entry` and `concurrency` illustrate a collection and a scalar setting; use the project's own domain operations and defaults.
22
+
23
+ ```ruby
24
+ # frozen_string_literal: true
25
+
26
+ module Example
27
+ class Builder
28
+ def initialize(configuration, root = Dir.pwd)
29
+ @configuration = configuration
30
+ @root = File.expand_path(root)
31
+ end
32
+
33
+ attr :root
34
+
35
+ def entry(name, value)
36
+ @configuration.add(name, value)
37
+ end
38
+
39
+ def concurrency(value)
40
+ @configuration.concurrency = value
41
+ end
42
+
43
+ def self.load_file(configuration, path)
44
+ path = File.realpath(path)
45
+ builder = self.new(configuration, File.dirname(path))
46
+ builder.instance_eval(File.read(path), path, 1)
47
+ end
48
+
49
+ def load_file(path)
50
+ self.class.load_file(@configuration, File.expand_path(path, @root))
51
+ end
52
+ end
53
+
54
+ class Configuration
55
+ def self.build(root: Dir.pwd, &block)
56
+ configuration = self.new
57
+ builder = Builder.new(configuration, root)
58
+
59
+ if block
60
+ if block.arity.zero?
61
+ builder.instance_eval(&block)
62
+ else
63
+ block.call(builder)
64
+ end
65
+ end
66
+
67
+ return configuration
68
+ end
69
+
70
+ def self.load(paths)
71
+ configuration = self.new
72
+ Array(paths).each{|path| configuration.load_file(path)}
73
+ return configuration
74
+ end
75
+
76
+ def initialize
77
+ @entries = {}
78
+ @concurrency = 1
79
+ end
80
+
81
+ attr :entries
82
+ attr_accessor :concurrency
83
+
84
+ def add(name, value)
85
+ @entries[name.to_sym] = value
86
+ end
87
+
88
+ def load_file(path)
89
+ Builder.load_file(self, path)
90
+ return self
91
+ end
92
+
93
+ def freeze
94
+ return self if frozen?
95
+
96
+ @entries.freeze
97
+
98
+ super
99
+ end
100
+ end
101
+ end
102
+ ```
103
+
104
+ The DSL and direct API operate on the same mutable state:
105
+
106
+ ```ruby
107
+ configuration = Example::Configuration.build do
108
+ entry :primary, "https://example.com"
109
+ concurrency 2
110
+ end
111
+
112
+ configuration.add(:secondary, "https://secondary.example.com")
113
+ configuration.concurrency = 4
114
+
115
+ Example::Configuration.build do |builder|
116
+ builder.entry(:primary, "https://example.com")
117
+ end
118
+ ```
119
+
120
+ The example allows an omitted block to return defaults. With a zero-arity block, `self` is the builder; with an explicit block argument, the caller's `self` is preserved. Both factories return the configuration regardless of the block's or file's last expression.
121
+
122
+ ## Explicit Freezing
123
+
124
+ Implement `Configuration#freeze` to freeze the state owned by the configuration, then call `super` to freeze the configuration itself. Return `self` immediately when already frozen so repeated calls do not repeat finalisation. The same configuration object is returned; freezing does not construct a replacement.
125
+
126
+ The example owns the `entries` hash and freezes it in place. Its registered values are application-supplied objects retained by reference, so they remain untouched. Freeze owned nested configuration data as appropriate to its schema, but do not recursively freeze arbitrary handlers, policies, or other application objects. Freezing the outer object alone would still allow `add` to modify an unfrozen hash.
127
+
128
+ The caller decides when configuration is complete:
129
+
130
+ ```ruby
131
+ configuration.freeze
132
+ ```
133
+
134
+ After this call, `concurrency=` and `add` raise `FrozenError`, including when called through a builder attached to the configuration. References previously obtained from `configuration.entries` refer to the same frozen hash. Registered objects keep their own lifecycle and mutability.
135
+
136
+ If finalisation prepares derived state, do that before calling `super`. Runtime methods must not depend on assigning new instance variables after the configuration has been frozen.
137
+
138
+ ## File Loading
139
+
140
+ Each file is evaluated by a new builder attached to the shared configuration. Its root is that file's directory. A nested `load_file "other.rb"` resolves against the calling builder's root and creates another builder for the referenced file. The original builder keeps its root throughout; no temporary root assignment or restoration is needed.
141
+
142
+ Resolve the file path before creating the builder, and pass the filename and starting line to `instance_eval` for useful source locations. Configuration files execute trusted application Ruby.
143
+
144
+ Multiple top-level files share one configuration. The example applies them in order, with later entries replacing earlier entries of the same name. Preserve the domain's duplicate and override rules when adapting the pattern. Evaluation errors propagate; mutations made before an error remain on an existing configuration. Loading is not transactional.
145
+
146
+ ## Applying the Standard
147
+
148
+ Use this design for new configuration DSLs and when standardising existing ones. Preserve existing public names and entry points as compatibility wrappers where needed; an existing `Loader` can retain its name while the implementation moves to `Builder`. Keep runtime query methods and domain validation on the configuration.
149
+
150
+ Verify that block and file factories return the configured object, that it can still be changed through the direct API, and that builders for multiple files update that same object. Explicit freezing should return that object, tolerate repeated calls, and prevent changes to its owned state through writers, collection readers, or attached builders, while leaving application objects untouched. For nested files, check relative resolution, stable builder roots, and exception source locations.
151
+
152
+ ## Established Examples
153
+
154
+ This design follows [Falcon's configuration/loader separation from June 2019](https://github.com/socketry/falcon/commit/438e04eb295400f0481d72b610a2f9c9ea062746), carried into [Async::Service in February 2024](https://github.com/socketry/async-service/commit/d2d717b7605d364df3a853e8a810aeab2bc36078). Async::Service's [configuration](https://github.com/socketry/async-service/blob/f32af00e5c7a54c936023b96f180710e811d410e/lib/async/service/configuration.rb) and [loader](https://github.com/socketry/async-service/blob/f32af00e5c7a54c936023b96f180710e811d410e/lib/async/service/loader.rb) illustrate the mutable state and per-file loading scopes. This standard uses the name `Builder` for that DSL role.
@@ -1,5 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ # @namespace
3
7
  module Socketry
4
- VERSION = "0.5.1"
8
+ VERSION = "0.6.0"
5
9
  end
data/lib/socketry.rb CHANGED
@@ -1,25 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Ruby stdlib dependencies
4
- require "io/wait"
5
- require "ipaddr"
6
- require "socket"
7
- require "openssl"
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
8
5
 
9
- # External gems
10
- require "hitimes"
11
-
12
- # Socketry codebase
13
- require "socketry/version"
14
-
15
- require "socketry/exceptions"
16
- require "socketry/resolver/resolv"
17
- require "socketry/resolver/system"
18
- require "socketry/timeout"
19
-
20
- require "socketry/tcp/server"
21
- require "socketry/tcp/socket"
22
- require "socketry/ssl/server"
23
- require "socketry/ssl/socket"
24
- require "socketry/udp/datagram"
25
- require "socketry/udp/socket"
6
+ require_relative "socketry/version"
data/license.md ADDED
@@ -0,0 +1,21 @@
1
+ # MIT License
2
+
3
+ Copyright, 2026, by Samuel Williams.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/readme.md ADDED
@@ -0,0 +1,47 @@
1
+ # Socketry
2
+
3
+ Socketry project metadata, agent context, and skills.
4
+
5
+ [![Development Status](https://github.com/socketry/socketry/workflows/Test/badge.svg)](https://github.com/socketry/socketry/actions?workflow=Test)
6
+
7
+ ## Agent Context
8
+
9
+ This gem distributes project conventions in the top-level `context/` directory:
10
+
11
+ - [Configuration and Builder](context/configuration.md) defines the mutable configuration and builder design for Ruby configuration DSLs.
12
+
13
+ Projects that include `socketry` and [`agent-context`](https://github.com/socketry/agent-context) can install the context and update their `agents.md` index with:
14
+
15
+ ``` bash
16
+ bundle exec bake agent:context:install --gem socketry
17
+ ```
18
+
19
+ ## Agent Skills
20
+
21
+ This gem provides reusable agent skills in the top-level `skills/` directory. Use [`agent-skills`](https://github.com/socketry/agent-skills) to discover and install them into a project.
22
+
23
+ ## Releases
24
+
25
+ Releases use [`bake-gem-github`](https://github.com/socketry/bake-gem-github). With Ruby 3.3 or later, install maintenance dependencies before preparing a release:
26
+
27
+ ``` bash
28
+ bundle config set --local with maintenance
29
+ bundle install
30
+ ```
31
+
32
+ Add release notes under `Unreleased` in `releases.md`. From a clean, up-to-date `main`, prepare a release pull request:
33
+
34
+ ``` bash
35
+ bundle exec bake gem:github:release:patch # or minor or major
36
+ ```
37
+
38
+ The release hook versions the notes. GitHub validates the release changes, then publishes the merged release to RubyGems using Trusted Publishing.
39
+
40
+ Publishing uses the `rubygems` GitHub environment, restricted to `main`. For initial activation, register a RubyGems Trusted Publisher for `socketry/socketry`, workflow `release-publish.yaml`, environment `rubygems`. After merging the setup and confirming the `Gem build` and `Release validation` checks run, review and apply the repository policy:
41
+
42
+ ``` bash
43
+ bundle exec bake gem:github:setup:plan
44
+ bundle exec bake gem:github:setup:apply
45
+ ```
46
+
47
+ The policy requires two PR approvals with administrator bypass. See the [release setup guide](https://socketry.github.io/bake-gem-github/guides/getting-started/index) for configuration and recovery.
data/releases.md ADDED
@@ -0,0 +1,6 @@
1
+ # Releases
2
+
3
+ ## Unreleased
4
+
5
+ - Distribute the mutable Configuration and Builder convention through `agent-context`.
6
+ - Prepare reviewed releases and publish through GitHub Actions using `bake-gem-github`.
@@ -0,0 +1,95 @@
1
+ ---
2
+ name: socketry-github-repository
3
+ description: Create and maintain Socketry GitHub repositories using the project conventions.
4
+ ---
5
+
6
+ # Socketry GitHub Repository
7
+
8
+ Use this skill when creating or maintaining GitHub repositories for Socketry projects.
9
+
10
+ ## Repository Metadata
11
+
12
+ Repository metadata should be concise, accurate, and consistent with the project purpose.
13
+
14
+ - Use the canonical GitHub organization and repository name for the project.
15
+ - Set a clear repository description that explains what the project provides.
16
+ - Set the homepage to the project documentation site when one exists.
17
+ - Add relevant topics that help discovery without duplicating words already present in the repository name.
18
+ - Prefer existing Socketry naming conventions over inventing new phrasing.
19
+
20
+ ## Repository Setup
21
+
22
+ When creating a new repository, configure the repository so it is immediately useful to contributors and automation.
23
+
24
+ - Ensure the default branch is `main`.
25
+ - Enable `Issues`.
26
+ - Enable `Sponsorships`.
27
+ - Enable `Preserve this repository`.
28
+ - Enable `Discussions`.
29
+ - Enable `Pull Requests`.
30
+ - Disable `Projects`.
31
+ - Disable `Wiki`.
32
+
33
+ ### Pull Requests
34
+
35
+ - Disable `Allow merge commits`.
36
+ - Enable `Allow squash merging`.
37
+ - Enable `Allow rebase merging`.
38
+ - Enable `Always suggest updating pull request branches`.
39
+ - Enable `Allow auto-merge`.
40
+ - Enable `Automatically delete head branches`.
41
+
42
+ ### Commits
43
+
44
+ - Enable `Require contributors to sign off on web-based commits`.
45
+ - Enable `Allow comments on individual commits`.
46
+
47
+ ## Issue Types
48
+
49
+ Use GitHub issue types to classify work:
50
+
51
+ - Use `Bug` for defect fixes and regressions.
52
+ - Use `Feature` for new user-facing capabilities.
53
+ - Use `Task` for maintenance, refactoring, documentation, tests, release work, and internal improvements.
54
+
55
+ Do not duplicate issue type information in issue or pull request body sections when GitHub metadata is available.
56
+
57
+ ## Labels
58
+
59
+ Prefer existing repository and organization labels. Use labels for workflow and review state rather than repeating information already captured by issue type.
60
+
61
+ Do not create new labels unless the repository genuinely needs a reusable classification that is not already represented by existing labels or issue types.
62
+
63
+ ## Branches and Protection
64
+
65
+ Repository protection should ensure changes to `main` are reviewed without blocking administrative maintenance.
66
+
67
+ - Protect the `main` branch.
68
+ - Require a pull request before merging into `main`.
69
+ - Require one approval before merging into `main`.
70
+ - Allow administrators to bypass the branch protection rules.
71
+ - Configure required status checks selectively so auto-merge works for normal pull requests.
72
+ - Require only stable status checks needed for safe auto-merge.
73
+ - Do not require experimental or informational checks.
74
+ - Do not require coverage checks unless the repository already reliably passes them.
75
+
76
+ ## Maintenance
77
+
78
+ When maintaining an existing repository, make the smallest safe metadata or settings change needed.
79
+
80
+ - Inspect the current repository settings before changing them.
81
+ - Preserve deliberate project-specific settings.
82
+ - Do not rename, archive, transfer, or delete a repository without explicit user approval.
83
+ - Do not disable issues, pull requests, or required checks without explicit user approval.
84
+
85
+ ## GitHub CLI
86
+
87
+ Use the GitHub CLI when making repository changes. Prefer explicit commands which show the target repository.
88
+
89
+ Before changing repository settings, confirm the target repository with:
90
+
91
+ ```bash
92
+ gh repo view OWNER/REPOSITORY
93
+ ```
94
+
95
+ When a command changes repository settings, use the full `OWNER/REPOSITORY` name rather than relying on the current directory.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: socketry-pull-request
3
+ description: Prepare Socketry pull request titles, commits, and descriptions using the project conventions.
4
+ ---
5
+
6
+ # Socketry Pull Request
7
+
8
+ Use this skill when preparing commits or pull requests for Socketry projects.
9
+
10
+ ## Titles and Commits
11
+
12
+ - Pull request titles must use Markdown and end with a full stop.
13
+ - Pull request titles must be complete sentences.
14
+ - Commit messages must use Markdown and end with a full stop.
15
+ - The first line of a commit message must focus on what was changed.
16
+ - Most commit messages should only be a single line.
17
+ - Relevant context should be retained in the code itself, such as comments, rather than using the commit message as a side channel for important details.
18
+ - Commit messages must not include agent links, attribution footers, generated-by annotations, or similar metadata.
19
+
20
+ ## Pull Request Description
21
+
22
+ The pull request description should lead directly into a brief summary, followed by a detailed description of the problem and solution.
23
+
24
+ Do not add a `Types of Changes` section to the pull request description. Use GitHub issue type metadata for classification instead.
25
+
26
+ Use this structure, replacing the placeholder text with project-specific content:
27
+
28
+ ```markdown
29
+ Briefly summarize the change in 1-3 sentences.
30
+
31
+ Describe the problem, context, and solution. Include implementation details that help reviewers understand the change. Link relevant issues if applicable. Include screenshots for aesthetic changes.
32
+ ```
33
+
34
+ ## Testing
35
+
36
+ Changes should include suitable test coverage. Aim for complete coverage of the behavior being changed or introduced.
37
+
38
+ Do not list passing test commands or verification steps in the pull request description unless they explain an unusual risk, limitation, or manual validation requirement.
39
+
40
+ ### External Tests
41
+
42
+ If downstream dependencies are directly affected by the change, add them as external tests when useful. See the `bake-test-external` gem for details.
43
+
44
+ ## Release Notes
45
+
46
+ If the change is user visible, add a brief release note following the `bake-releases` documentation.
47
+
48
+ ## Issue Type
49
+
50
+ Set the GitHub issue type correctly when creating or updating a pull request:
51
+
52
+ - Use `Bug` for defect fixes and regressions.
53
+ - Use `Feature` for new user-facing capabilities.
54
+ - Use `Task` for maintenance, refactoring, documentation, tests, release work, and internal improvements.
metadata CHANGED
@@ -1,81 +1,34 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socketry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
- - Tony Arcieri
8
- autorequire:
9
- bindir: exe
7
+ - Samuel Williams
8
+ bindir: bin
10
9
  cert_chain: []
11
- date: 2016-11-26 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: hitimes
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.2'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.0'
41
- description: Socketry wraps Ruby's sockets with an advanced timeout engine which is
42
- able to provide multiple simultaneous timeout behaviors in a thread-safe way.
43
- email:
44
- - bascule@gmail.com
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
45
12
  executables: []
46
13
  extensions: []
47
14
  extra_rdoc_files: []
48
15
  files:
49
- - ".gitignore"
50
- - ".rspec"
51
- - ".rubocop.yml"
52
- - ".ruby-version"
53
- - ".travis.yml"
54
- - CHANGES.md
55
- - Gemfile
56
- - Guardfile
57
- - LICENSE.txt
58
- - README.md
59
- - Rakefile
16
+ - context/configuration.md
60
17
  - lib/socketry.rb
61
- - lib/socketry/exceptions.rb
62
- - lib/socketry/resolver/resolv.rb
63
- - lib/socketry/resolver/system.rb
64
- - lib/socketry/ssl/server.rb
65
- - lib/socketry/ssl/socket.rb
66
- - lib/socketry/tcp/server.rb
67
- - lib/socketry/tcp/socket.rb
68
- - lib/socketry/timeout.rb
69
- - lib/socketry/udp/datagram.rb
70
- - lib/socketry/udp/socket.rb
71
18
  - lib/socketry/version.rb
72
- - logo.png
73
- - socketry.gemspec
74
- homepage: https://github.com/socketry/socketry/
19
+ - license.md
20
+ - readme.md
21
+ - releases.md
22
+ - skills/socketry-github-repository/SKILL.md
23
+ - skills/socketry-pull-request/SKILL.md
24
+ homepage: https://github.com/socketry/socketry
75
25
  licenses:
76
26
  - MIT
77
- metadata: {}
78
- post_install_message:
27
+ metadata:
28
+ bug_tracker_uri: https://github.com/socketry/socketry/issues
29
+ changelog_uri: https://github.com/socketry/socketry/blob/main/releases.md
30
+ funding_uri: https://github.com/sponsors/ioquatix/
31
+ source_code_uri: https://github.com/socketry/socketry.git
79
32
  rdoc_options: []
80
33
  require_paths:
81
34
  - lib
@@ -83,16 +36,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
36
  requirements:
84
37
  - - ">="
85
38
  - !ruby/object:Gem::Version
86
- version: 2.2.6
39
+ version: '3.3'
87
40
  required_rubygems_version: !ruby/object:Gem::Requirement
88
41
  requirements:
89
42
  - - ">="
90
43
  - !ruby/object:Gem::Version
91
44
  version: '0'
92
45
  requirements: []
93
- rubyforge_project:
94
- rubygems_version: 2.5.2
95
- signing_key:
46
+ rubygems_version: 4.0.16
96
47
  specification_version: 4
97
- summary: High-level wrappers for Ruby sockets with advanced thread-safe timeout support
48
+ summary: Socketry project metadata, agent context, and skills.
98
49
  test_files: []
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --color
2
- --format=documentation
3
- --order random
4
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,59 +0,0 @@
1
- AllCops:
2
- DisplayCopNames: true
3
-
4
- #
5
- # Style
6
- #
7
-
8
- LineLength:
9
- Max: 128
10
-
11
- Style/AccessorMethodName:
12
- Enabled: false
13
-
14
- Style/ConditionalAssignment:
15
- Enabled: false
16
-
17
- Style/NumericPredicate:
18
- Enabled: false
19
-
20
- Style/RescueModifier:
21
- Enabled: false
22
-
23
- Style/SpaceBeforeFirstArg:
24
- Enabled: false
25
-
26
- Style/StringLiterals:
27
- EnforcedStyle: double_quotes
28
-
29
- #
30
- # Metrics
31
- #
32
-
33
- Metrics/AbcSize:
34
- Max: 50
35
-
36
- Metrics/ClassLength:
37
- Max: 200
38
-
39
- Metrics/CyclomaticComplexity:
40
- Max: 15
41
-
42
- Metrics/MethodLength:
43
- Max: 50
44
-
45
- Metrics/ParameterLists:
46
- Enabled: false
47
-
48
- Metrics/PerceivedComplexity:
49
- Max: 15
50
-
51
- #
52
- # Lint
53
- #
54
-
55
- Lint/HandleExceptions:
56
- Enabled: false
57
-
58
- Lint/ShadowedException:
59
- Enabled: false
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.3.3
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
- sudo: false
3
-
4
- bundler_args: --without development doc
5
-
6
- rvm:
7
- - 2.2.6
8
- - 2.3.3
9
- - jruby-9.1.6.0
10
-
11
- matrix:
12
- fast_finish: true
13
-
14
- branches:
15
- only:
16
- - master