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 +4 -4
- data/README.md +2 -8
- data/Steepfile +7 -0
- data/app/models/tanshuku/url.rb +8 -8
- data/db/migrate/20230220123456_create_tanshuku_urls.rb +1 -1
- data/lib/generators/tanshuku/install_generator.rb +2 -1
- data/lib/tanshuku/configuration.rb +2 -2
- data/lib/tanshuku/version.rb +1 -1
- data/lib/tanshuku.rb +4 -4
- data/lib/tasks/check_all.rb +2 -4
- data/rbs_collection.lock.yaml +230 -0
- data/rbs_collection.yaml +19 -0
- data/sig/app/controllers/tanshuku/urls_controller.rbs +5 -0
- data/sig/app/models/tanshuku/url.rbs +114 -0
- data/sig/db/migrate/create_tanshuku_urls.rbs +2 -0
- data/sig/lib/generators/tanshuku/install_generator.rbs +4 -0
- data/sig/lib/tanshuku/configuration.rbs +42 -0
- data/sig/lib/tanshuku/engine.rbs +4 -0
- data/sig/lib/tanshuku/version.rbs +3 -0
- data/sig/lib/tanshuku.rbs +6 -0
- data/sig/lib/tasks/check_all.rbs +16 -0
- metadata +20 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5ff274193edca38641529760b038e3768c39548f092c4eeaa88d26984e48f4a
|
4
|
+
data.tar.gz: 2efbb4cc502878b7e7bf9d3eab8e4aefa2bd9006c730065735705012ac3c7123
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94e2ca5cd226b71bbde625b6cbfbceb0a4bbfff38a46a00f0a40b207f9026c61487bc6b8d51c68f69534554e0006228ac2cf034196f7e1aaf13b9568a842aabc
|
7
|
+
data.tar.gz: 98f6a408b804298b838b740781b6ceb134f2afb1bc9f193778c12107d94207793de8edc8f3fbc34e3c933957d84c1aa7196ed90d49a7831ff28b2599bc6c112c
|
data/README.md
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
[](https://rubygems.org/gems/tanshuku/versions/2.0.0)
|
2
|
-
[](https://www.ruby-lang.org)
|
3
|
-
[](https://rubyonrails.org/)
|
4
|
-
[](LICENSE)
|
5
|
-
[](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:
|
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
data/app/models/tanshuku/url.rb
CHANGED
@@ -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:
|
86
|
-
r.attributes = { url
|
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:
|
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:
|
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:
|
115
|
+
hashed_url = hash_url(normalized_url, namespace:)
|
116
116
|
|
117
|
-
find_by(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:
|
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
|
162
|
+
Tanshuku.config.exception_reporter.call(exception:, original_url:)
|
163
163
|
end
|
164
164
|
|
165
165
|
# The record’s shortened URL.
|
@@ -7,7 +7,8 @@ module Tanshuku
|
|
7
7
|
#
|
8
8
|
# @api private
|
9
9
|
class InstallGenerator < Rails::Generators::Base
|
10
|
-
|
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:
|
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(
|
174
|
+
def initialize(...)
|
175
175
|
super
|
176
176
|
@mutex = Mutex.new
|
177
177
|
end
|
data/lib/tanshuku/version.rb
CHANGED
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/
|
18
|
+
# rubocop:disable ThreadSafety/InstanceVariableInClassMethod
|
19
19
|
@config ||= Configuration.new
|
20
|
-
# rubocop:enable ThreadSafety/
|
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(&
|
39
|
-
config.configure(&
|
38
|
+
def self.configure(&)
|
39
|
+
config.configure(&)
|
40
40
|
end
|
41
41
|
end
|
data/lib/tasks/check_all.rb
CHANGED
@@ -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:
|
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
|
data/rbs_collection.yaml
ADDED
@@ -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,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,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,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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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: '
|
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.
|
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.
|