ruby_smart-support 1.2.0 → 1.4.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
2
  SHA256:
3
- metadata.gz: '04538f8760bf132b3624905d73d7d814be6db112127400c8813f788fbbcccbd9'
4
- data.tar.gz: a25eef7736cfe55d98316f55fc44fac46b1866cdfa27fdac19194942c55cd685
3
+ metadata.gz: 1775b5245ce4c9ca6de799fc00e1144c3b9025f75c1dc2ddbeea2aefc45e7d66
4
+ data.tar.gz: 72749e09f012e15c978a50e03ecc2dc3c7a20bdefeda9b461b127174702e8802
5
5
  SHA512:
6
- metadata.gz: cdca8016dc310dee6967f9f35ee9ba24bbb67e968ed6836306e2df22f68433d5d8cc86260b8c7b00ea86ea173e44d02a5efe89cbf3403f3a0091eab609a40aef
7
- data.tar.gz: c8d56578f4bc8dd2fb8adcd081176b1ffd5c8fa52db1cc82380f6baac7358e7163e4b54810fd8d21ca15f2e0c9aa8dd4024516dfbbb58eb6e14767555fd2fe28
6
+ metadata.gz: d5073cc0aac8b4a59b79fc3809b2319bac5dd9cba53b2bd0c73110f40ef6aaa280a352b9b393c29c7a6745a4960b58536cdb54a743f5c2029734454048b4e1d2
7
+ data.tar.gz: bcc21095d341d019e833fe3bfb0fd39ed2bb0acaf18ac50a6a60a568a573349f465ab106dfe552e8f61e83685096b82fefd254bb4609ca0ad263a02e7ede6af2
@@ -18,21 +18,17 @@ permissions:
18
18
 
19
19
  jobs:
20
20
  test:
21
-
22
- runs-on: ubuntu-latest
23
21
  strategy:
22
+ fail-fast: false
24
23
  matrix:
25
- ruby-version: ['3.1', '3.0', '2.7', '2.6']
26
-
24
+ os: [ubuntu-latest]
25
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
26
+ ruby: ['3.2', '3.1', '3.0', '2.7', '2.6']
27
+ runs-on: ${{ matrix.os }}
27
28
  steps:
28
- - uses: actions/checkout@v3
29
- - name: Set up Ruby
30
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
31
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
32
- # uses: ruby/setup-ruby@v1
33
- uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa # v1.115.3
34
- with:
35
- ruby-version: ${{ matrix.ruby-version }}
36
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
37
- - name: Run tests
38
- run: bundle exec rake
29
+ - uses: actions/checkout@v3
30
+ - uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{ matrix.ruby }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - run: bundle exec rake
data/README.md CHANGED
@@ -40,6 +40,7 @@ Or install it yourself as:
40
40
  * *Hash* `#to_md5`, `#product`
41
41
  * *Object* `#numeric?`, `#boolean?`, `#missing_method?`, `#alias_missing_method`
42
42
  * *String* `#to_boolean`, `#to_md5`
43
+ * *Enumerator* `#from_hash`
43
44
 
44
45
  * extensions for activesupport
45
46
  * *Hash* `#only!`, `#without!`, `#deep_reject`
@@ -85,6 +86,7 @@ ThreadInfo.info
85
86
  * .console?
86
87
  * .irb?
87
88
  * .pry?
89
+ * .sidekiq?
88
90
  * .server?
89
91
  * .rails_console?
90
92
  * .io_console?
@@ -119,6 +121,11 @@ GemInfo.installed
119
121
  GemInfo.loaded
120
122
  # > {'bundler' => '2.2.30', ...}
121
123
 
124
+ # returns a hash of all loaded gems with its current license
125
+ # (gems from the Gemfile)
126
+ GemInfo.licenses
127
+ # > {'bundler' => 'MIT', ...}
128
+
122
129
  # returns an array of all active gems
123
130
  GemInfo.active
124
131
  # > ['bundler', ...]
@@ -155,6 +162,7 @@ GemInfo.match?( '0.1.0', '~> 1.1.0',)
155
162
  * .installed?
156
163
  * .loaded
157
164
  * .loaded?
165
+ * .licenses
158
166
  * .active
159
167
  * .active?
160
168
  * .features
@@ -195,6 +203,21 @@ rake db:migrate
195
203
  # > executes append block
196
204
  ```
197
205
 
206
+
207
+ ## Enumerator extensions
208
+
209
+ With the new method `from_hash` you can now easily map values from an array of hashes.
210
+
211
+ ```ruby
212
+ ary = [{a: 34, b: 12}, {a: 19, c: 4}, {b: 3, c: 11}]
213
+ ary.map.from_hash(:a)
214
+ # > [34, 19, nil]
215
+
216
+ ```
217
+
218
+
219
+
220
+
198
221
  -----
199
222
 
200
223
  ## Docs
data/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # RubySmart::Support - CHANGELOG
2
2
 
3
+ ## [1.4.0] - 2023-10-19
4
+ * **[ref]** `RubySmart::Support::ThreadInfo.sidekiq?`-detection to determinate if the current thread is a sidekiq process
5
+
6
+ ## [1.3.0] - 2023-08-08
7
+ * **[add]** `Enumerator.from_hash` to easily resolve values from Array-of-Hashes (use: ary.map.from_hash(key))
8
+ * **[add]** `RubySmart::Support::GemInfo.licenses` to resolve a hash of licences per loaded gem
9
+ * **[fix]** `RubySmart::Support::ThreadInfo.winsize`-detection for debug-ENVs
10
+ * **[ref]** `RubySmart::Support::ThreadInfo.name` to show full application namespace
11
+ * **[ref]** `RubySmart::Support::ThreadInfo.info` to show a optimized info-string
12
+
3
13
  ## [1.2.0] - 2023-01-24
4
14
  * **[ref]** `GemInfo` methods (active -> required & active? -> required?)
5
15
  * **[ref]** simplify `GemInfo.match?`method
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ unless Enumerator.method_defined? :from_hash
4
+ class Enumerator
5
+ # returns a new array with only values from provided key.
6
+ # The Enumerator must be an array of hashes.
7
+ #
8
+ # @example
9
+ # ary = [{a: 34, b: 12}, {a: 19, c: 4}, {b: 3, c: 11}]
10
+ # ary.map.from_hash(:a)
11
+ # > [34, 19, nil]
12
+ #
13
+ # @param [Object] key
14
+ # @return [Array] ary
15
+ def from_hash(key)
16
+ map &->(item){item[key]}
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "core_ext/ruby/array"
4
+ require_relative "core_ext/ruby/enumerator"
4
5
  require_relative "core_ext/ruby/float"
5
6
  require_relative "core_ext/ruby/hash"
6
7
  require_relative "core_ext/ruby/object"
@@ -53,6 +53,18 @@ module RubySmart
53
53
  Hash[::Gem.loaded_specs.values.map { |g| [g.name, g.version.to_s] }.sort]
54
54
  end
55
55
 
56
+ # returns a hash of all loaded gems with it's licenses
57
+ #
58
+ # @example
59
+ #
60
+ # GemInfo.licenses
61
+ # # > {'bundler' => 'MIT', 'hashery' => 'BSD-2-Clause'}
62
+ #
63
+ # @return [Hash{<name> => <license>}] licenses
64
+ def self.licenses
65
+ Hash[::Gem.loaded_specs.values.map { |g| [g.name, g.license || '?'] }.sort]
66
+ end
67
+
56
68
  # returns true if the provided gem name is loaded (defined within any Gemfile), but must not be required yet.
57
69
  # the optional version requirement matches against the loaded version
58
70
  #
@@ -9,7 +9,7 @@ module RubySmart
9
9
 
10
10
  module VERSION
11
11
  MAJOR = 1
12
- MINOR = 2
12
+ MINOR = 4
13
13
  TINY = 0
14
14
  PRE = nil
15
15
 
@@ -7,7 +7,7 @@ module RubySmart
7
7
  module ThreadInfo
8
8
 
9
9
  # defines a array of types which will be checked by resolving the current thread type
10
- TYPE_ORDER = [:rake, :console, :server].freeze
10
+ TYPE_ORDER = [:rake, :console, :sidekiq, :server].freeze
11
11
 
12
12
  # returns true if this is a running rake process
13
13
  # @return [Boolean]
@@ -39,6 +39,12 @@ module RubySmart
39
39
  !!defined?(Pry)
40
40
  end
41
41
 
42
+ # returns true if this is a running 'sidekiq' server process.
43
+ # @return [Boolean]
44
+ def self.sidekiq?
45
+ !!defined?(Sidekiq) && Sidekiq.server?
46
+ end
47
+
42
48
  # returns true if this is a running server process.
43
49
  # currently only detects rails
44
50
  # @return [Boolean]
@@ -98,7 +104,7 @@ module RubySmart
98
104
  # @return [String] name
99
105
  def self.name
100
106
  return Rake.application.top_level_tasks.first.to_s if rake?
101
- return Rails.application.to_s.split('::').first if rails?
107
+ return Rails.application.class.name if rails?
102
108
  ''
103
109
  end
104
110
 
@@ -112,9 +118,7 @@ module RubySmart
112
118
  # returns the thread type string
113
119
  # @return [String] thread-info string
114
120
  def self.info
115
- strs = ["$#{id}", "[##{process_object_id}]","@ #{type}"]
116
- strs << " :: #{name}" if name != ''
117
- strs.join ' '
121
+ "$(#{id}) -> [##{process_object_id}] @ #{type} :: #{self.name}"
118
122
  end
119
123
 
120
124
  # returns true if thread has a 'window'
@@ -127,7 +131,7 @@ module RubySmart
127
131
  # @return [Array<rows, columns>] winsize
128
132
  def self.winsize
129
133
  return IO.console.winsize if io_console?
130
- return [ENV['ROWS'], ENV['COLUMNS']] unless ENV['ROWS'].nil? && ENV['COLUMNS'].nil?
134
+ return [ENV['ROWS'].to_i, ENV['COLUMNS'].to_i] unless ENV['ROWS'].nil? || ENV['COLUMNS'].nil?
131
135
  [0, 0]
132
136
  end
133
137
 
@@ -36,4 +36,6 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency 'rake', '~> 13.0'
37
37
  spec.add_development_dependency 'rspec', '~> 3.0'
38
38
  spec.add_development_dependency 'yard', '~> 0.9'
39
+ spec.add_development_dependency 'yard-activesupport-concern', '~> 0.0.1'
40
+ spec.add_development_dependency 'yard-relative_markdown_links', '>= 0.4'
39
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_smart-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Gonsior
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-24 00:00:00.000000000 Z
11
+ date: 2023-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.9'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard-activesupport-concern
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.0.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.0.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard-relative_markdown_links
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0.4'
83
111
  description: 'RubySmart::Support is a toolkit of support libraries for Ruby - major
84
112
  features includes GemInfo & ThreadInfo, as well core extensions for Ruby & activesupport
85
113
  (if installed).
@@ -111,6 +139,7 @@ files:
111
139
  - lib/ruby_smart/support/core_ext/rails/info.rb
112
140
  - lib/ruby_smart/support/core_ext/rake/task.rb
113
141
  - lib/ruby_smart/support/core_ext/ruby/array.rb
142
+ - lib/ruby_smart/support/core_ext/ruby/enumerator.rb
114
143
  - lib/ruby_smart/support/core_ext/ruby/float.rb
115
144
  - lib/ruby_smart/support/core_ext/ruby/hash.rb
116
145
  - lib/ruby_smart/support/core_ext/ruby/object.rb
@@ -130,7 +159,7 @@ metadata:
130
159
  documentation_uri: https://rubydoc.info/gems/ruby_smart-support
131
160
  changelog_uri: https://github.com/ruby-smart/support/blob/main/docs/CHANGELOG.md
132
161
  allowed_push_host: https://rubygems.org
133
- post_install_message:
162
+ post_install_message:
134
163
  rdoc_options: []
135
164
  require_paths:
136
165
  - lib
@@ -145,8 +174,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
174
  - !ruby/object:Gem::Version
146
175
  version: '0'
147
176
  requirements: []
148
- rubygems_version: 3.3.7
149
- signing_key:
177
+ rubygems_version: 3.4.10
178
+ signing_key:
150
179
  specification_version: 4
151
180
  summary: A toolkit of support libraries including GemInfo, ThreadInfo, Ruby core extensions
152
181
  & optionally activesupport extensions