tanshuku 2.0.2 → 3.0.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: 02ecbaaff21e734b68382c179b154a19425e89ca3639bc16717aea64ff9f8398
4
- data.tar.gz: 5ba490d590f1434a46333ad450bedd15568dbbf5e57f4254bc480d3a2f532bd2
3
+ metadata.gz: b5ff274193edca38641529760b038e3768c39548f092c4eeaa88d26984e48f4a
4
+ data.tar.gz: 2efbb4cc502878b7e7bf9d3eab8e4aefa2bd9006c730065735705012ac3c7123
5
5
  SHA512:
6
- metadata.gz: 4387ca8fd4cc69cbc71ec38463bb31de400ed62d29d4ee0ef947634deca95a763e9408edb1be6e97f96b0baad2441aefd703bd8cd2711b1a66d9dbac78370de6
7
- data.tar.gz: 6a492c69c9133a526a8f9d0e366580ef89f2d9e857b82a809c0e7ba3bde50650fc3248d5fbd494b9cd6ee25787751881301a7d39c3f1c5bcbce91a9b1084e955
6
+ metadata.gz: 94e2ca5cd226b71bbde625b6cbfbceb0a4bbfff38a46a00f0a40b207f9026c61487bc6b8d51c68f69534554e0006228ac2cf034196f7e1aaf13b9568a842aabc
7
+ data.tar.gz: 98f6a408b804298b838b740781b6ceb134f2afb1bc9f193778c12107d94207793de8edc8f3fbc34e3c933957d84c1aa7196ed90d49a7831ff28b2599bc6c112c
data/README.md CHANGED
@@ -1,9 +1,3 @@
1
- [![RubyGems.org](https://img.shields.io/badge/RubyGems.org-Tanshuku%20v2-red)](https://rubygems.org/gems/tanshuku/versions/2.0.0)
2
- [![Ruby 2.5+](https://img.shields.io/badge/Ruby-2.5+-red)](https://www.ruby-lang.org)
3
- [![Rails 5.1+](https://img.shields.io/badge/Rails-5.1+-red)](https://rubyonrails.org/)
4
- [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
5
- [![Checks](https://github.com/kg8m/tanshuku/actions/workflows/checks.yml/badge.svg?branch=2-0-stable)](https://github.com/kg8m/tanshuku/blob/2-0-stable/.github/workflows/checks.yml)
6
-
7
1
  # Tanshuku
8
2
 
9
3
  Tanshuku is a simple and small Rails engine that makes it easier to shorten URLs.
@@ -71,7 +65,7 @@ The following example means that an exception and a URL will be reported to [Sen
71
65
  Tanshuku.configure do |config|
72
66
  config.exception_reporter =
73
67
  lambda { |exception:, original_url:|
74
- Sentry.capture_exception(exception, tags: { original_url: original_url })
68
+ Sentry.capture_exception(exception, tags: { original_url: })
75
69
  }
76
70
  end
77
71
  ```
@@ -186,7 +180,7 @@ A. Does Tanshuku have some missing features? Please [create an issue](https://gi
186
180
 
187
181
  1. Fork this repository
188
182
  1. `git clone` your fork
189
- 1. `bundle install`
183
+ 1. `bundle install` and `rake steep:prepare`
190
184
  1. Update sources
191
185
  1. `rake`
192
186
  1. Fix `rake` errors if `rake` fails
data/Steepfile ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ target :main do
4
+ check "app", "config", "db", "lib"
5
+ signature "sig"
6
+ collection_config "rbs_collection.yaml"
7
+ end
@@ -82,8 +82,8 @@ module Tanshuku
82
82
  begin
83
83
  transaction do
84
84
  record =
85
- create_or_find_by!(hashed_url: hash_url(url, namespace: namespace)) do |r|
86
- r.attributes = { url: url, key: generate_key }
85
+ create_or_find_by!(hashed_url: hash_url(url, namespace:)) do |r|
86
+ r.attributes = { url:, key: generate_key }
87
87
  end
88
88
 
89
89
  record.shortened_url(url_options)
@@ -94,12 +94,12 @@ module Tanshuku
94
94
  retries += 1
95
95
  retry
96
96
  else
97
- report_exception(exception: e, original_url: original_url)
97
+ report_exception(exception: e, original_url:)
98
98
  original_url
99
99
  end
100
100
  end
101
101
  rescue StandardError => e
102
- report_exception(exception: e, original_url: original_url)
102
+ report_exception(exception: e, original_url:)
103
103
  original_url
104
104
  end
105
105
 
@@ -112,9 +112,9 @@ module Tanshuku
112
112
  # @return [nil] +nil+ unless found.
113
113
  def self.find_by_url(url, namespace: DEFAULT_NAMESPACE)
114
114
  normalized_url = normalize_url(url)
115
- hashed_url = hash_url(normalized_url, namespace: namespace)
115
+ hashed_url = hash_url(normalized_url, namespace:)
116
116
 
117
- find_by(hashed_url: hashed_url)
117
+ find_by(hashed_url:)
118
118
  end
119
119
 
120
120
  # Normalizes a URL. Adds or removes a trailing slash, removes +?+ for an empty query, and so on. And sorts query
@@ -138,7 +138,7 @@ module Tanshuku
138
138
  #
139
139
  # @return [String] Depends on your {Tanshuku::Configuration#url_hasher} configuration.
140
140
  def self.hash_url(url, namespace: DEFAULT_NAMESPACE)
141
- Tanshuku.config.url_hasher.call(url, namespace: namespace)
141
+ Tanshuku.config.url_hasher.call(url, namespace:)
142
142
  end
143
143
 
144
144
  # Generates a unique key for a shortened URL.
@@ -159,7 +159,7 @@ module Tanshuku
159
159
  #
160
160
  # @return [void] Depends on your {Tanshuku::Configuration#exception_reporter} configuration.
161
161
  def self.report_exception(exception:, original_url:)
162
- Tanshuku.config.exception_reporter.call(exception: exception, original_url: original_url)
162
+ Tanshuku.config.exception_reporter.call(exception:, original_url:)
163
163
  end
164
164
 
165
165
  # The record’s shortened URL.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class CreateTanshukuUrls < ActiveRecord::Migration[6.0]
3
+ class CreateTanshukuUrls < ActiveRecord::Migration[7.0]
4
4
  def change
5
5
  create_table :tanshuku_urls do |t|
6
6
  t.text :url, null: false
@@ -7,7 +7,8 @@ module Tanshuku
7
7
  #
8
8
  # @api private
9
9
  class InstallGenerator < Rails::Generators::Base
10
- source_root File.expand_path("../templates", __dir__)
10
+ # Assign `_ = __dir__` because Steep reports `__dir__` which can be a `nil` but I don’t want to care about that.
11
+ source_root File.expand_path("../templates", _ = __dir__)
11
12
 
12
13
  # Generates a configuration file +config/initializers/tanshuku.rb+.
13
14
  #
@@ -166,12 +166,12 @@ module Tanshuku
166
166
  # Tanshuku.configure do |config|
167
167
  # config.exception_reporter =
168
168
  # lambda { |exception:, original_url:|
169
- # Sentry.capture_exception(exception, tags: { original_url: original_url })
169
+ # Sentry.capture_exception(exception, tags: { original_url: })
170
170
  # }
171
171
  # end
172
172
  attribute :exception_reporter, default: DefaultExceptionReporter
173
173
 
174
- def initialize(*args)
174
+ def initialize(...)
175
175
  super
176
176
  @mutex = Mutex.new
177
177
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tanshuku
4
- VERSION = "2.0.2"
4
+ VERSION = "3.0.0"
5
5
  end
data/lib/tanshuku.rb CHANGED
@@ -15,9 +15,9 @@ module Tanshuku
15
15
  # {Tanshuku.configure} for configuration.
16
16
  def self.config
17
17
  # Disable this cop but use `Tanshuku::Configuration#configure` for thread-safety.
18
- # rubocop:disable ThreadSafety/ClassInstanceVariable
18
+ # rubocop:disable ThreadSafety/InstanceVariableInClassMethod
19
19
  @config ||= Configuration.new
20
- # rubocop:enable ThreadSafety/ClassInstanceVariable
20
+ # rubocop:enable ThreadSafety/InstanceVariableInClassMethod
21
21
  end
22
22
 
23
23
  # Configures Tanshuku.
@@ -35,7 +35,7 @@ module Tanshuku
35
35
  # Tanshuku.configure do |config|
36
36
  # config.default_url_options = { host: "localhost", protocol: :https }
37
37
  # end
38
- def self.configure(&block)
39
- config.configure(&block)
38
+ def self.configure(&)
39
+ config.configure(&)
40
40
  end
41
41
  end
@@ -6,7 +6,7 @@ require "paint"
6
6
  require "pty"
7
7
 
8
8
  class CheckAll
9
- TASKNAMES = %i[rubocop spec yard:check].freeze
9
+ TASKNAMES = %i[rubocop spec steep:check yard:check].freeze
10
10
  LINE = Paint["-" * (IO.console or raise).winsize[1], :bold]
11
11
  TITLE_TEMPLATE = Paint["\n#{LINE}\nExecute: %<command>s\n#{LINE}\n\n", :bold]
12
12
 
@@ -21,9 +21,7 @@ class CheckAll
21
21
  end
22
22
 
23
23
  def call
24
- # rubocop:disable ThreadSafety/NewThread
25
24
  TASKNAMES.map { |taskname| Thread.new(taskname, &executor) }.each(&:join)
26
- # rubocop:enable ThreadSafety/NewThread
27
25
  output_result
28
26
  end
29
27
 
@@ -34,7 +32,7 @@ class CheckAll
34
32
  command = "bundle exec rake #{taskname}"
35
33
 
36
34
  outputs = []
37
- outputs << format(TITLE_TEMPLATE, command: command)
35
+ outputs << format(TITLE_TEMPLATE, command:)
38
36
 
39
37
  # Use `PTY.spawn` to get colorized outputs of each command.
40
38
  PTY.spawn(command) do |reader, writer, pid|
@@ -0,0 +1,230 @@
1
+ ---
2
+ sources:
3
+ - type: git
4
+ name: ruby/gem_rbs_collection
5
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
6
+ remote: https://github.com/ruby/gem_rbs_collection.git
7
+ repo_dir: gems
8
+ path: ".gem_rbs_collection"
9
+ gems:
10
+ - name: actionmailer
11
+ version: '7.0'
12
+ source:
13
+ type: git
14
+ name: ruby/gem_rbs_collection
15
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
16
+ remote: https://github.com/ruby/gem_rbs_collection.git
17
+ repo_dir: gems
18
+ - name: actionpack
19
+ version: '6.0'
20
+ source:
21
+ type: git
22
+ name: ruby/gem_rbs_collection
23
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
24
+ remote: https://github.com/ruby/gem_rbs_collection.git
25
+ repo_dir: gems
26
+ - name: actionview
27
+ version: '6.0'
28
+ source:
29
+ type: git
30
+ name: ruby/gem_rbs_collection
31
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
32
+ remote: https://github.com/ruby/gem_rbs_collection.git
33
+ repo_dir: gems
34
+ - name: activejob
35
+ version: '6.0'
36
+ source:
37
+ type: git
38
+ name: ruby/gem_rbs_collection
39
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
40
+ remote: https://github.com/ruby/gem_rbs_collection.git
41
+ repo_dir: gems
42
+ - name: activemodel
43
+ version: '7.0'
44
+ source:
45
+ type: git
46
+ name: ruby/gem_rbs_collection
47
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
48
+ remote: https://github.com/ruby/gem_rbs_collection.git
49
+ repo_dir: gems
50
+ - name: activerecord
51
+ version: '7.0'
52
+ source:
53
+ type: git
54
+ name: ruby/gem_rbs_collection
55
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
56
+ remote: https://github.com/ruby/gem_rbs_collection.git
57
+ repo_dir: gems
58
+ - name: activestorage
59
+ version: '6.1'
60
+ source:
61
+ type: git
62
+ name: ruby/gem_rbs_collection
63
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
64
+ remote: https://github.com/ruby/gem_rbs_collection.git
65
+ repo_dir: gems
66
+ - name: activesupport
67
+ version: '7.0'
68
+ source:
69
+ type: git
70
+ name: ruby/gem_rbs_collection
71
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
72
+ remote: https://github.com/ruby/gem_rbs_collection.git
73
+ repo_dir: gems
74
+ - name: base64
75
+ version: '0'
76
+ source:
77
+ type: stdlib
78
+ - name: bigdecimal
79
+ version: '0'
80
+ source:
81
+ type: stdlib
82
+ - name: cgi
83
+ version: '0'
84
+ source:
85
+ type: stdlib
86
+ - name: concurrent-ruby
87
+ version: '1.1'
88
+ source:
89
+ type: git
90
+ name: ruby/gem_rbs_collection
91
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
92
+ remote: https://github.com/ruby/gem_rbs_collection.git
93
+ repo_dir: gems
94
+ - name: connection_pool
95
+ version: '2.4'
96
+ source:
97
+ type: git
98
+ name: ruby/gem_rbs_collection
99
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
100
+ remote: https://github.com/ruby/gem_rbs_collection.git
101
+ repo_dir: gems
102
+ - name: date
103
+ version: '0'
104
+ source:
105
+ type: stdlib
106
+ - name: digest
107
+ version: '0'
108
+ source:
109
+ type: stdlib
110
+ - name: erb
111
+ version: '0'
112
+ source:
113
+ type: stdlib
114
+ - name: globalid
115
+ version: '1.1'
116
+ source:
117
+ type: git
118
+ name: ruby/gem_rbs_collection
119
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
120
+ remote: https://github.com/ruby/gem_rbs_collection.git
121
+ repo_dir: gems
122
+ - name: i18n
123
+ version: '1.10'
124
+ source:
125
+ type: git
126
+ name: ruby/gem_rbs_collection
127
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
128
+ remote: https://github.com/ruby/gem_rbs_collection.git
129
+ repo_dir: gems
130
+ - name: io-console
131
+ version: '0'
132
+ source:
133
+ type: stdlib
134
+ - name: logger
135
+ version: '0'
136
+ source:
137
+ type: stdlib
138
+ - name: mail
139
+ version: '2.8'
140
+ source:
141
+ type: git
142
+ name: ruby/gem_rbs_collection
143
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
144
+ remote: https://github.com/ruby/gem_rbs_collection.git
145
+ repo_dir: gems
146
+ - name: minitest
147
+ version: '0'
148
+ source:
149
+ type: stdlib
150
+ - name: monitor
151
+ version: '0'
152
+ source:
153
+ type: stdlib
154
+ - name: mutex_m
155
+ version: '0'
156
+ source:
157
+ type: stdlib
158
+ - name: nokogiri
159
+ version: '1.11'
160
+ source:
161
+ type: git
162
+ name: ruby/gem_rbs_collection
163
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
164
+ remote: https://github.com/ruby/gem_rbs_collection.git
165
+ repo_dir: gems
166
+ - name: rack
167
+ version: '2.2'
168
+ source:
169
+ type: git
170
+ name: ruby/gem_rbs_collection
171
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
172
+ remote: https://github.com/ruby/gem_rbs_collection.git
173
+ repo_dir: gems
174
+ - name: rails-dom-testing
175
+ version: '2.0'
176
+ source:
177
+ type: git
178
+ name: ruby/gem_rbs_collection
179
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
180
+ remote: https://github.com/ruby/gem_rbs_collection.git
181
+ repo_dir: gems
182
+ - name: railties
183
+ version: '6.0'
184
+ source:
185
+ type: git
186
+ name: ruby/gem_rbs_collection
187
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
188
+ remote: https://github.com/ruby/gem_rbs_collection.git
189
+ repo_dir: gems
190
+ - name: rdoc
191
+ version: '0'
192
+ source:
193
+ type: stdlib
194
+ - name: securerandom
195
+ version: '0'
196
+ source:
197
+ type: stdlib
198
+ - name: singleton
199
+ version: '0'
200
+ source:
201
+ type: stdlib
202
+ - name: tempfile
203
+ version: '0'
204
+ source:
205
+ type: stdlib
206
+ - name: thor
207
+ version: '1.2'
208
+ source:
209
+ type: git
210
+ name: ruby/gem_rbs_collection
211
+ revision: 8149bc3fc0f720d935dc0592dc8886e03052f65f
212
+ remote: https://github.com/ruby/gem_rbs_collection.git
213
+ repo_dir: gems
214
+ - name: time
215
+ version: '0'
216
+ source:
217
+ type: stdlib
218
+ - name: timeout
219
+ version: '0'
220
+ source:
221
+ type: stdlib
222
+ - name: tsort
223
+ version: '0'
224
+ source:
225
+ type: stdlib
226
+ - name: uri
227
+ version: '0'
228
+ source:
229
+ type: stdlib
230
+ gemfile_lock_path: Gemfile.lock
@@ -0,0 +1,19 @@
1
+ sources:
2
+ - type: git
3
+ name: ruby/gem_rbs_collection
4
+ remote: https://github.com/ruby/gem_rbs_collection.git
5
+ revision: main
6
+ repo_dir: gems
7
+
8
+ path: .gem_rbs_collection
9
+
10
+ gems:
11
+ - name: rbs
12
+ ignore: true
13
+ - name: steep
14
+ ignore: true
15
+ - name: tanshuku
16
+ ignore: true
17
+
18
+ - name: digest
19
+ - name: securerandom
@@ -0,0 +1,5 @@
1
+ module Tanshuku
2
+ class UrlsController < ActionController::API
3
+ def show: -> void
4
+ end
5
+ end
@@ -0,0 +1,114 @@
1
+ # cf. https://github.com/pocke/rbs_rails
2
+ module Tanshuku
3
+ class Url < ActiveRecord::Base
4
+ class ActiveRecord_Relation < ActiveRecord::Relation
5
+ include _ActiveRecord_Relation[Tanshuku::Url, Integer]
6
+ include Enumerable[Tanshuku::Url]
7
+ end
8
+
9
+ extend _ActiveRecord_Relation_ClassMethods[Tanshuku::Url, ActiveRecord_Relation, Integer]
10
+
11
+ DEFAULT_NAMESPACE: String
12
+
13
+ module GeneratedAttributeMethods
14
+ attr_accessor id (): Integer?
15
+ def id?: () -> bool
16
+ def id_changed?: () -> bool
17
+ def id_change: () -> [Integer?, Integer?]
18
+ def id_will_change!: () -> void
19
+ def id_was: () -> Integer?
20
+ def id_previously_changed?: () -> bool
21
+ def id_previous_change: () -> [Integer?, Integer?]?
22
+ def id_previously_was: () -> Integer?
23
+ def id_before_last_save: () -> Integer?
24
+ def id_change_to_be_saved: () -> [Integer?, Integer?]?
25
+ def id_in_database: () -> Integer?
26
+ def saved_change_to_id: () -> [Integer?, Integer?]?
27
+ def saved_change_to_id?: () -> bool
28
+ def will_save_change_to_id?: () -> bool
29
+ def restore_id!: () -> void
30
+ def clear_id_change: () -> void
31
+
32
+ attr_accessor url (): String?
33
+ def url?: () -> bool
34
+ def url_changed?: () -> bool
35
+ def url_change: () -> [String?, String?]
36
+ def url_will_change!: () -> void
37
+ def url_was: () -> String?
38
+ def url_previously_changed?: () -> bool
39
+ def url_previous_change: () -> [String?, String?]?
40
+ def url_previously_was: () -> String?
41
+ def url_before_last_save: () -> String?
42
+ def url_change_to_be_saved: () -> [String?, String?]?
43
+ def url_in_database: () -> String?
44
+ def saved_change_to_url: () -> [String?, String?]?
45
+ def saved_change_to_url?: () -> bool
46
+ def will_save_change_to_url?: () -> bool
47
+ def restore_url!: () -> void
48
+ def clear_url_change: () -> void
49
+
50
+ attr_accessor hashed_url (): String?
51
+ def hashed_url?: () -> bool
52
+ def hashed_url_changed?: () -> bool
53
+ def hashed_url_change: () -> [String?, String?]
54
+ def hashed_url_will_change!: () -> void
55
+ def hashed_url_was: () -> String?
56
+ def hashed_url_previously_changed?: () -> bool
57
+ def hashed_url_previous_change: () -> [String?, String?]?
58
+ def hashed_url_previously_was: () -> String?
59
+ def hashed_url_before_last_save: () -> String?
60
+ def hashed_url_change_to_be_saved: () -> [String?, String?]?
61
+ def hashed_url_in_database: () -> String?
62
+ def saved_change_to_hashed_url: () -> [String?, String?]?
63
+ def saved_change_to_hashed_url?: () -> bool
64
+ def will_save_change_to_hashed_url?: () -> bool
65
+ def restore_hashed_url!: () -> void
66
+ def clear_hashed_url_change: () -> void
67
+
68
+ attr_accessor key (): String?
69
+ def key?: () -> bool
70
+ def key_changed?: () -> bool
71
+ def key_change: () -> [String?, String?]
72
+ def key_will_change!: () -> void
73
+ def key_was: () -> String?
74
+ def key_previously_changed?: () -> bool
75
+ def key_previous_change: () -> [String?, String?]?
76
+ def key_previously_was: () -> String?
77
+ def key_before_last_save: () -> String?
78
+ def key_change_to_be_saved: () -> [String?, String?]?
79
+ def key_in_database: () -> String?
80
+ def saved_change_to_key: () -> [String?, String?]?
81
+ def saved_change_to_key?: () -> bool
82
+ def will_save_change_to_key?: () -> bool
83
+ def restore_key!: () -> void
84
+ def clear_key_change: () -> void
85
+
86
+ attr_accessor created_at (): ActiveSupport::TimeWithZone?
87
+ def created_at?: () -> bool
88
+ def created_at_changed?: () -> bool
89
+ def created_at_change: () -> [ActiveSupport::TimeWithZone?, ActiveSupport::TimeWithZone?]
90
+ def created_at_will_change!: () -> void
91
+ def created_at_was: () -> ActiveSupport::TimeWithZone?
92
+ def created_at_previously_changed?: () -> bool
93
+ def created_at_previous_change: () -> [ActiveSupport::TimeWithZone?, ActiveSupport::TimeWithZone?]?
94
+ def created_at_previously_was: () -> ActiveSupport::TimeWithZone?
95
+ def created_at_before_last_save: () -> ActiveSupport::TimeWithZone?
96
+ def created_at_change_to_be_saved: () -> [ActiveSupport::TimeWithZone?, ActiveSupport::TimeWithZone?]?
97
+ def created_at_in_database: () -> ActiveSupport::TimeWithZone?
98
+ def saved_change_to_created_at: () -> [ActiveSupport::TimeWithZone?, ActiveSupport::TimeWithZone?]?
99
+ def saved_change_to_created_at?: () -> bool
100
+ def will_save_change_to_created_at?: () -> bool
101
+ def restore_created_at!: () -> void
102
+ def clear_created_at_change: () -> void
103
+ end
104
+ include GeneratedAttributeMethods
105
+
106
+ def self.shorten: (String original_url, ?namespace: String, ?url_options: Hash[String | Symbol, untyped]) -> String
107
+ def self.find_by_url: (String url, ?namespace: String) -> Tanshuku::Url?
108
+ def self.normalize_url: (String url) -> String
109
+ def self.hash_url: (String url, ?namespace: String) -> String
110
+ def self.generate_key: -> String
111
+ def self.report_exception: (exception: Exception, original_url: String) -> void
112
+ def shortened_url: (?Hash[String | Symbol, untyped] url_options) -> String
113
+ end
114
+ end
@@ -0,0 +1,2 @@
1
+ class CreateTanshukuUrls < ActiveRecord::Migration::Compatibility::V7_0
2
+ end
@@ -0,0 +1,4 @@
1
+ module Tanshuku
2
+ class InstallGenerator < Rails::Generators::Base
3
+ end
4
+ end
@@ -0,0 +1,42 @@
1
+ module Tanshuku
2
+ class Configuration
3
+ interface _UrlHasher
4
+ def call: (String url, namespace: String) -> String
5
+ end
6
+
7
+ interface _KeyGenerator
8
+ def call: -> String
9
+ end
10
+
11
+ interface _ExceptionReporter
12
+ def call: (exception: Exception, original_url: String) -> void
13
+ end
14
+
15
+ extend ActiveModel::Attributes::ClassMethods
16
+
17
+ @mutex: Thread::Mutex
18
+
19
+ attr_accessor default_url_options (): Hash[String | Symbol, untyped]
20
+ attr_accessor max_url_length (): Integer
21
+ attr_accessor url_pattern (): Regexp
22
+ attr_accessor key_length (): Integer
23
+ attr_accessor url_hasher (): _UrlHasher
24
+ attr_accessor key_generator (): _KeyGenerator
25
+ attr_accessor exception_reporter (): _ExceptionReporter
26
+
27
+ def initialize: (*bot noname) -> void
28
+ def configure: { (Configuration) -> void } -> void
29
+
30
+ module DefaultUrlHasher
31
+ extend _UrlHasher
32
+ end
33
+
34
+ module DefaultKeyGenerator
35
+ extend _KeyGenerator
36
+ end
37
+
38
+ module DefaultExceptionReporter
39
+ extend _ExceptionReporter
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,4 @@
1
+ module Tanshuku
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Tanshuku
2
+ VERSION: String
3
+ end
@@ -0,0 +1,6 @@
1
+ module Tanshuku
2
+ self.@config: Configuration
3
+
4
+ def self.config: -> Configuration
5
+ def self.configure: { (Configuration config) -> void } -> void
6
+ end
@@ -0,0 +1,16 @@
1
+ class CheckAll
2
+ TASKNAMES: Array[Symbol]
3
+ LINE: String
4
+ TITLE_TEMPLATE: String
5
+
6
+ attr_reader failed_commands: Array[String]
7
+
8
+ def self.call: () -> void
9
+
10
+ def call: () -> void
11
+
12
+ private
13
+
14
+ def executor: () -> ^(*String) -> void
15
+ def output_result: () -> void
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanshuku
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kg8m
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-28 00:00:00.000000000 Z
11
+ date: 2023-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -16,34 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.4'
19
+ version: 2.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.4'
26
+ version: 2.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '6.0'
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '7.2'
33
+ version: 7.0.0
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - ">="
42
39
  - !ruby/object:Gem::Version
43
- version: '6.0'
44
- - - "<"
45
- - !ruby/object:Gem::Version
46
- version: '7.2'
40
+ version: 7.0.0
47
41
  description: Tanshuku is a simple and performance aware Rails engine for shortening
48
42
  URLs. Tanshuku generates a shortened URL per a normalized original URL. Tanshuku
49
43
  redirects from a shortened URL to its corresponding original URL.
@@ -55,6 +49,7 @@ extra_rdoc_files: []
55
49
  files:
56
50
  - LICENSE
57
51
  - README.md
52
+ - Steepfile
58
53
  - app/controllers/tanshuku/urls_controller.rb
59
54
  - app/models/tanshuku/url.rb
60
55
  - config/locales/en.yml
@@ -68,6 +63,17 @@ files:
68
63
  - lib/tanshuku/engine.rb
69
64
  - lib/tanshuku/version.rb
70
65
  - lib/tasks/check_all.rb
66
+ - rbs_collection.lock.yaml
67
+ - rbs_collection.yaml
68
+ - sig/app/controllers/tanshuku/urls_controller.rbs
69
+ - sig/app/models/tanshuku/url.rbs
70
+ - sig/db/migrate/create_tanshuku_urls.rbs
71
+ - sig/lib/generators/tanshuku/install_generator.rbs
72
+ - sig/lib/tanshuku.rbs
73
+ - sig/lib/tanshuku/configuration.rbs
74
+ - sig/lib/tanshuku/engine.rbs
75
+ - sig/lib/tanshuku/version.rbs
76
+ - sig/lib/tasks/check_all.rbs
71
77
  homepage: https://github.com/kg8m/tanshuku
72
78
  licenses:
73
79
  - MIT
@@ -85,17 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
91
  requirements:
86
92
  - - ">="
87
93
  - !ruby/object:Gem::Version
88
- version: '2.7'
89
- - - "<"
90
- - !ruby/object:Gem::Version
91
- version: '3.2'
94
+ version: '3.1'
92
95
  required_rubygems_version: !ruby/object:Gem::Requirement
93
96
  requirements:
94
97
  - - ">="
95
98
  - !ruby/object:Gem::Version
96
99
  version: '0'
97
100
  requirements: []
98
- rubygems_version: 3.3.27
101
+ rubygems_version: 3.4.10
99
102
  signing_key:
100
103
  specification_version: 4
101
104
  summary: Tanshuku is a simple and performance aware Rails engine for shortening URLs.