hit_counter 0.1.7 → 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: 1bfd52435bab4d39632294cf37ab3917253eaa9d5b87c95deb73f5be82c138e6
4
- data.tar.gz: a0870d308b8b07c2391c86f8505c29dcb327bc258c091fe9e4ca0fe36efe7431
3
+ metadata.gz: '013949b93fcf3d8d975d2b3f72d9316b0f3ccf5b96d3616d1c33a5284ef3013a'
4
+ data.tar.gz: a64f4a9454ae2173f7080a5620201f3bbd642e20879a6fe214776566a4749c6a
5
5
  SHA512:
6
- metadata.gz: 165f95ecbd2ad595b64445b0e6b7ca124330a010b9b666cfa4d9f4b452e388582cecc118832b4b91f2ccb5fbe138e08ec62b0ff6cc063214b130b965f2e747d1
7
- data.tar.gz: df8ed21a478d44dd53451b56b3c52a7346d6d471360bd14f3d5950fecd84ddf525bf32c0147cdf061d375c58da068861cf18f5da0d9c5d74d27afc52398be762
6
+ metadata.gz: 9d2d3ccdb3175244749ca69a11d9bd4308d0b196f9f7d097586603a2e345a544c2ebc25cd7b266749ab034bf1479094f89fd513ed91bcf51d71131b716a5827e
7
+ data.tar.gz: 4117dd9c74b8c7aad4877361afe5ed2530e53ab1190cddb6b1a853c8352a6c73a4d440c053872cb5523edd1cb778dad3027a4f56e294cd4c9075195e6d456721
checksums.yaml.gz.sig CHANGED
Binary file
@@ -12,31 +12,23 @@ jobs:
12
12
  name: Ruby ${{ matrix.ruby-version }}
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: [2.5, 2.6, 2.7, '3.0']
15
+ ruby-version: [3.1, 3.2, 3.3]
16
16
  steps:
17
- - name: Checkout code
18
- uses: actions/checkout@v2
19
- - name: Set up Ruby ${{ matrix.ruby-version }}
20
- uses: ruby/setup-ruby@v1
17
+ - uses: actions/checkout@main
18
+ - uses: supercharge/mongodb-github-action@main
19
+ with:
20
+ mongodb-version: '4.4'
21
+ - uses: ruby/setup-ruby@master
21
22
  with:
22
23
  ruby-version: ${{ matrix.ruby-version }}
23
24
  bundler-cache: true # 'bundle install' and cache
24
- - name: Start MongoDB
25
- uses: supercharge/mongodb-github-action@1.7.0
26
- with:
27
- mongodb-version: '4.4'
28
- - name: Run tests
29
- run: bundle exec rake
30
- - name: Send Code Climate coverage
31
- uses: amancevice/setup-code-climate@v0
25
+ - run: bundle exec rake
26
+ - uses: amancevice/setup-code-climate@main
32
27
  with:
33
28
  cc_test_reporter_id: ${{ secrets.CC_TEST_REPORTER_ID }}
34
29
  - run: cc-test-reporter after-build --coverage-input-type lcov
35
- - name: Send Coveralls coverage
36
- uses: coverallsapp/github-action@master
30
+ - uses: coverallsapp/github-action@master
37
31
  with:
38
32
  github-token: ${{ secrets.GITHUB_TOKEN }}
39
- - name: Run RuboCop
40
- run: bundle exec rubocop
41
- - name: Run Inch
42
- run: bundle exec inch --pedantic
33
+ - run: bundle exec rubocop
34
+ - run: bundle exec inch --pedantic
data/.rubocop.yml ADDED
@@ -0,0 +1,7 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ NewCops: enable
data/Gemfile CHANGED
@@ -3,12 +3,13 @@
3
3
  source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
- gem 'inch', '~> 0.8'
7
- gem 'pry', '~> 0.14.1'
8
- gem 'rake', '>= 12.3.3', '~> 13.0'
9
- gem 'rspec', '~> 3'
10
- gem 'rubocop', '< 1.29'
11
- gem 'rubocop-rake', '~> 0'
12
- gem 'rubocop-rspec', '~> 2'
13
- gem 'simplecov', '~> 0.18'
14
- gem 'simplecov-lcov', '~> 0.8'
6
+ gem 'inch'
7
+ gem 'pry'
8
+ gem 'rake'
9
+ gem 'rspec'
10
+ gem 'rubocop'
11
+ gem 'rubocop-performance'
12
+ gem 'rubocop-rake'
13
+ gem 'rubocop-rspec'
14
+ gem 'simplecov'
15
+ gem 'simplecov-lcov'
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2022 Roderick Monje
1
+ Copyright (c) 2011-2024 Roderick Monje
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -117,4 +117,4 @@ Complete RDoc documentation is available at [RubyDoc.info](https://www.rubydoc.i
117
117
 
118
118
  ## Copyright
119
119
 
120
- Copyright © 2011-2022 Roderick Monje. See LICENSE.txt for further details.
120
+ Copyright © 2011-2024 Roderick Monje. See LICENSE.txt for further details.
data/SECURITY.md CHANGED
@@ -6,8 +6,8 @@
6
6
 
7
7
  | Version | Supported |
8
8
  | ------- | ------------------ |
9
- | 0.1.7 | :white_check_mark: |
10
- | < 0.1.7 | :x: |
9
+ | 1.0.0 | :white_check_mark: |
10
+ | < 1.0.0 | :x: |
11
11
 
12
12
  ## Reporting a Vulnerability
13
13
 
@@ -1,25 +1,26 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
25
26
  -----END CERTIFICATE-----
data/hit_counter.gemspec CHANGED
@@ -4,22 +4,23 @@ require File.expand_path 'lib/version', __dir__
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'hit_counter'
6
6
  s.version = HitCounter::VERSION.dup
7
+ s.licenses = ['MIT']
7
8
  s.summary = 'Self-hosted Ruby version of that old 90s chestnut, the web-site hit counter.'
8
- s.description = 'Why roast this chestnut by that open fire, you ask? Cause '\
9
- 'thousands and thousands of Internet vets are still using the one we '\
10
- "wrote in PHP eons ago and we don't want to be squandering any incidental "\
11
- "Google juice, that's why."
9
+ s.description = 'Why roast this chestnut by that open fire, you ask? Cause ' \
10
+ 'thousands and thousands of Internet vets are still using the one we ' \
11
+ "wrote in PHP eons ago and we don't want to be squandering any incidental " \
12
+ "Google juice, that's why."
12
13
  s.homepage = 'https://github.com/FoveaCentral/hit_counter'
13
14
  s.authors = ['Roderick Monje']
14
15
  s.cert_chain = ['certs/ivanoblomov.pem']
15
- s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $PROGRAM_NAME =~ /gem\z/
16
+ s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $PROGRAM_NAME.end_with?('gem')
16
17
 
17
- s.add_runtime_dependency 'addressable', '~> 2'
18
- s.add_runtime_dependency 'bson_ext', '~> 1'
19
- s.add_runtime_dependency 'mongoid', '~> 7'
20
- s.add_runtime_dependency 'rmagick', '>= 2', '< 5'
18
+ s.add_dependency 'addressable'
19
+ s.add_dependency 'mongoid'
20
+ s.add_dependency 'rmagick'
21
21
 
22
22
  s.files = `git ls-files`.split "\n"
23
23
  s.require_paths = ['lib']
24
- s.required_ruby_version = '>= 2.5'
24
+ s.required_ruby_version = '>= 3.1'
25
+ s.metadata['rubygems_mfa_required'] = 'true'
25
26
  end
data/lib/hit_counter.rb CHANGED
@@ -124,8 +124,8 @@ class HitCounter
124
124
  private_class_method def self.cat_image(number, style_index, images = Magick::ImageList.new)
125
125
  return images.append(false) if number.blank?
126
126
 
127
- cat_image(number[1..-1], style_index, images <<
128
- Magick::Image.read("#{Rails.root}/public/images/digits/"\
127
+ cat_image(number[1..], style_index, images <<
128
+ Magick::Image.read("#{Rails.root}/public/images/digits/" \
129
129
  "#{STYLES[style_index]}/#{number[0..0]}.png").first)
130
130
  end
131
131
 
@@ -139,6 +139,6 @@ class HitCounter
139
139
  end
140
140
 
141
141
  private_class_method def self.normalize_url(value)
142
- value !~ %r{^http://} ? "http://#{value}" : value
142
+ %r{^http://}.match?(value) ? value : "http://#{value}"
143
143
  end
144
144
  end
data/lib/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # Self-hosted Ruby version of that old 90s chestnut, <BLINK>the web-site hit counter</BLINK>
4
4
  class HitCounter
5
5
  # This gem's version
6
- VERSION = '0.1.7' unless defined?(HitCounter::VERSION)
6
+ VERSION = '1.0.0' unless defined?(HitCounter::VERSION)
7
7
  end
@@ -7,14 +7,13 @@ require "#{File.dirname(__FILE__)}/../spec_helper"
7
7
  JAVASCRIPT_HACK = %q(eval("console.log('All your base belong to us!')"))
8
8
  # rubocop:disable Metrics/BlockLength
9
9
  describe HitCounter do
10
- before(:all) { described_class.delete_all }
11
-
12
- subject { described_class.get 'www.google.com' }
10
+ subject(:hit_counter) { described_class.get 'www.google.com' }
13
11
 
14
12
  describe '.get' do
15
13
  context 'with existing URL' do
16
- let!(:hit_counter2) { described_class.get subject.url, 10 }
14
+ let!(:hit_counter2) { described_class.get hit_counter.url, 10 }
17
15
 
16
+ # rubocop:disable RSpec/NestedGroups
18
17
  describe '.count' do
19
18
  it { expect(described_class.count).to eq 1 }
20
19
  end
@@ -25,6 +24,7 @@ describe HitCounter do
25
24
  end
26
25
  end
27
26
  end
27
+
28
28
  context 'with new URL' do
29
29
  before { described_class.get 'www.cnn.com' }
30
30
 
@@ -39,88 +39,108 @@ describe HitCounter do
39
39
  end
40
40
  end
41
41
  end
42
+
42
43
  context 'with starting count 10' do
43
44
  describe '#hits' do
44
45
  it { expect(described_class.get('online.wsj.com', 10).hits).to eq 10 }
45
46
  end
46
47
  end
47
48
  end
49
+
48
50
  context 'with JavaScript' do
49
- before { described_class.delete_all }
51
+ subject(:hit_counter) { described_class.get(JAVASCRIPT_HACK) }
50
52
 
51
- subject { described_class.get(JAVASCRIPT_HACK) }
53
+ before { described_class.delete_all }
52
54
 
53
55
  it do
54
- subject.save
55
- expect(subject).to be_invalid
56
+ hit_counter.save
57
+ expect(hit_counter).to be_invalid
56
58
  end
59
+ # rubocop:enable RSpec/NestedGroups
57
60
  end
58
61
  end
62
+
59
63
  describe '.install' do
60
64
  before do
61
- expect_any_instance_of(Object).to receive(:system).twice.with match(/config|public/)
65
+ allow(Object).to receive(:system)
66
+ described_class.install
62
67
  end
63
68
 
64
- it('copies configuration files and images') { described_class.install }
69
+ it('copies configuration files and images') do
70
+ expect(Object).to have_received(:system).twice.with match(/config|public/)
71
+ end
65
72
  end
73
+
66
74
  describe '#hits' do
67
- it { expect(subject.hits).to eq 0 }
75
+ it { expect(hit_counter.hits).to eq 0 }
68
76
 
69
77
  context 'when incremented' do
70
- before { subject.increment }
78
+ before { hit_counter.increment }
71
79
 
72
- it { expect(subject.hits).to eq 1 }
80
+ it { expect(hit_counter.hits).to eq 1 }
73
81
  end
74
82
  end
83
+
75
84
  describe '#hits=' do
76
85
  context 'with JavaScript' do
77
- before { subject.hits = JAVASCRIPT_HACK }
86
+ before { hit_counter.hits = JAVASCRIPT_HACK }
78
87
 
79
- it { expect(subject.hits).to eq 0 }
88
+ it { expect(hit_counter.hits).to eq 0 }
80
89
  end
81
90
  end
91
+
82
92
  describe '#image' do
83
93
  context 'with a valid :style_number' do
84
- it { expect(subject.image('1').filename).to eq "./public/images/digits/odometer/#{subject.hits}.png" }
94
+ it { expect(hit_counter.image('1').filename).to eq "./public/images/digits/odometer/#{hit_counter.hits}.png" }
85
95
  end
96
+
86
97
  context 'with JavaScript' do
87
98
  it {
88
- expect(subject.image(JAVASCRIPT_HACK).filename).to eq "./public/images/digits/odometer/#{subject.hits}.png"
99
+ expect(hit_counter.image(JAVASCRIPT_HACK).filename)
100
+ .to eq "./public/images/digits/odometer/#{hit_counter.hits}.png"
89
101
  }
90
102
  end
91
103
  end
104
+
92
105
  describe '#url=' do
93
106
  context 'with JavaScript' do
94
107
  before do
95
- subject.url = JAVASCRIPT_HACK
96
- subject.save
108
+ hit_counter.url = JAVASCRIPT_HACK
109
+ hit_counter.save
97
110
  end
98
111
 
99
- it { expect(subject).to be_invalid }
112
+ it { expect(hit_counter).to be_invalid }
100
113
  end
101
114
  end
115
+
102
116
  describe '.normalize_style_number' do
103
117
  context 'with nil' do
104
118
  it { expect(described_class.send(:normalize_style_number, nil)).to be_zero }
105
119
  end
120
+
106
121
  context 'with empty string' do
107
122
  it { expect(described_class.send(:normalize_style_number, '')).to be_zero }
108
123
  end
124
+
109
125
  context 'with JavaScript' do
110
126
  it { expect(described_class.send(:normalize_style_number, JAVASCRIPT_HACK)).to be_zero }
111
127
  end
128
+
112
129
  context 'with number in range' do
113
130
  {
114
131
  '1' => 0,
115
132
  '3' => 2
116
133
  }.each do |input, output|
134
+ # rubocop:disable RSpec/NestedGroups
117
135
  context "with '#{input}'" do
118
136
  it do
119
137
  expect(described_class.send(:normalize_style_number, input)).to eq output
120
138
  end
121
139
  end
140
+ # rubocop:enable RSpec/NestedGroups
122
141
  end
123
142
  end
143
+
124
144
  context 'with number outside range' do
125
145
  {
126
146
  '-31' => 2,
@@ -128,14 +148,17 @@ describe HitCounter do
128
148
  '4' => 0,
129
149
  '34' => 0
130
150
  }.each do |input, output|
151
+ # rubocop:disable RSpec/NestedGroups
131
152
  context "with '#{input}'" do
132
153
  it do
133
154
  expect(described_class.send(:normalize_style_number, input)).to eq output
134
155
  end
135
156
  end
157
+ # rubocop:enable RSpec/NestedGroups
136
158
  end
137
159
  end
138
160
  end
161
+
139
162
  describe '.normalize_url' do
140
163
  {
141
164
  'cnn.com' => 'http://cnn.com',
data/spec/spec_helper.rb CHANGED
@@ -5,13 +5,13 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
6
  require 'addressable/uri'
7
7
  require 'mongoid'
8
- require 'RMagick'
8
+ require 'rmagick'
9
9
  require 'rspec'
10
10
 
11
11
  require 'hit_counter'
12
12
 
13
13
  Mongoid.load! 'config/mongoid.yml', :test
14
- Mongo::Logger.logger.level = ::Logger::WARN
14
+ Mongo::Logger.logger.level = Logger::WARN
15
15
 
16
16
  # Stub Rails root during tests.
17
17
  module Rails
@@ -27,7 +27,7 @@ require 'rake'
27
27
  module TaskFormat
28
28
  extend ActiveSupport::Concern
29
29
  included do
30
- let(:task_name) { self.class.top_level_description.sub(/\Arake /, '') }
30
+ let(:task_name) { self.class.top_level_description.delete_prefix('rake ') }
31
31
  let(:tasks) { Rake::Task }
32
32
  # Make the Rake task available as `task` in your examples:
33
33
  subject(:task) { tasks[task_name] }
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hit_counter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roderick Monje
@@ -10,94 +10,75 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIEQDCCAqigAwIBAgIBATANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpyb2Qv
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- MAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQzajljgeoJIjO/4h4X7ve/jYWVSDAf
26
- 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
- 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
- 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
- cE10liYjCWQNxectkkYmOsCBlEDfOngNKdl3QJ+Y5+SEsqfKYhZXZypn+SwuXx8F
30
- LuVPsP7/R6VlrI8WbtPU1oSfM+rmdpUZzDcvmtvy1S+tPfFWalo8tSXPg0gE3Nis
31
- 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
- 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
- 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
- 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
- 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
36
37
  -----END CERTIFICATE-----
37
- date: 2022-07-06 00:00:00.000000000 Z
38
+ date: 2024-11-04 00:00:00.000000000 Z
38
39
  dependencies:
39
40
  - !ruby/object:Gem::Dependency
40
41
  name: addressable
41
42
  requirement: !ruby/object:Gem::Requirement
42
43
  requirements:
43
- - - "~>"
44
- - !ruby/object:Gem::Version
45
- version: '2'
46
- type: :runtime
47
- prerelease: false
48
- version_requirements: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '2'
53
- - !ruby/object:Gem::Dependency
54
- name: bson_ext
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
44
+ - - ">="
58
45
  - !ruby/object:Gem::Version
59
- version: '1'
46
+ version: '0'
60
47
  type: :runtime
61
48
  prerelease: false
62
49
  version_requirements: !ruby/object:Gem::Requirement
63
50
  requirements:
64
- - - "~>"
51
+ - - ">="
65
52
  - !ruby/object:Gem::Version
66
- version: '1'
53
+ version: '0'
67
54
  - !ruby/object:Gem::Dependency
68
55
  name: mongoid
69
56
  requirement: !ruby/object:Gem::Requirement
70
57
  requirements:
71
- - - "~>"
58
+ - - ">="
72
59
  - !ruby/object:Gem::Version
73
- version: '7'
60
+ version: '0'
74
61
  type: :runtime
75
62
  prerelease: false
76
63
  version_requirements: !ruby/object:Gem::Requirement
77
64
  requirements:
78
- - - "~>"
65
+ - - ">="
79
66
  - !ruby/object:Gem::Version
80
- version: '7'
67
+ version: '0'
81
68
  - !ruby/object:Gem::Dependency
82
69
  name: rmagick
83
70
  requirement: !ruby/object:Gem::Requirement
84
71
  requirements:
85
72
  - - ">="
86
73
  - !ruby/object:Gem::Version
87
- version: '2'
88
- - - "<"
89
- - !ruby/object:Gem::Version
90
- version: '5'
74
+ version: '0'
91
75
  type: :runtime
92
76
  prerelease: false
93
77
  version_requirements: !ruby/object:Gem::Requirement
94
78
  requirements:
95
79
  - - ">="
96
80
  - !ruby/object:Gem::Version
97
- version: '2'
98
- - - "<"
99
- - !ruby/object:Gem::Version
100
- version: '5'
81
+ version: '0'
101
82
  description: Why roast this chestnut by that open fire, you ask? Cause thousands and
102
83
  thousands of Internet vets are still using the one we wrote in PHP eons ago and
103
84
  we don't want to be squandering any incidental Google juice, that's why.
@@ -115,6 +96,7 @@ files:
115
96
  - ".github/workflows/test.yml"
116
97
  - ".gitignore"
117
98
  - ".rspec"
99
+ - ".rubocop.yml"
118
100
  - ".simplecov"
119
101
  - CODE_OF_CONDUCT.md
120
102
  - CONTRIBUTING.md
@@ -163,8 +145,10 @@ files:
163
145
  - spec/lib/hit_counter_spec.rb
164
146
  - spec/spec_helper.rb
165
147
  homepage: https://github.com/FoveaCentral/hit_counter
166
- licenses: []
167
- metadata: {}
148
+ licenses:
149
+ - MIT
150
+ metadata:
151
+ rubygems_mfa_required: 'true'
168
152
  post_install_message:
169
153
  rdoc_options: []
170
154
  require_paths:
@@ -173,14 +157,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
173
157
  requirements:
174
158
  - - ">="
175
159
  - !ruby/object:Gem::Version
176
- version: '2.5'
160
+ version: '3.1'
177
161
  required_rubygems_version: !ruby/object:Gem::Requirement
178
162
  requirements:
179
163
  - - ">="
180
164
  - !ruby/object:Gem::Version
181
165
  version: '0'
182
166
  requirements: []
183
- rubygems_version: 3.1.6
167
+ rubygems_version: 3.5.6
184
168
  signing_key:
185
169
  specification_version: 4
186
170
  summary: Self-hosted Ruby version of that old 90s chestnut, the web-site hit counter.
metadata.gz.sig CHANGED
Binary file