tanshuku 0.0.20 → 1.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 -2
- data/app/models/tanshuku/url.rb +27 -9
- data/db/migrate/20230220123456_create_tanshuku_urls.rb +1 -1
- data/lib/generators/tanshuku/install_generator.rb +1 -2
- data/lib/tanshuku/configuration.rb +64 -3
- data/lib/tanshuku/version.rb +1 -1
- data/lib/tanshuku.rb +2 -2
- data/lib/tasks/check_all.rb +2 -2
- metadata +16 -19
- data/Steepfile +0 -7
- data/rbs_collection.lock.yaml +0 -230
- data/rbs_collection.yaml +0 -19
- data/sig/app/controllers/tanshuku/urls_controller.rbs +0 -5
- data/sig/app/models/tanshuku/url.rbs +0 -114
- data/sig/db/migrate/create_tanshuku_urls.rbs +0 -2
- data/sig/lib/generators/tanshuku/install_generator.rbs +0 -4
- data/sig/lib/tanshuku/configuration.rbs +0 -42
- data/sig/lib/tanshuku/engine.rbs +0 -4
- data/sig/lib/tanshuku/version.rbs +0 -3
- data/sig/lib/tanshuku.rbs +0 -6
- data/sig/lib/tasks/check_all.rbs +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92f985a414af971db170f5ce9a171469af6901f47feb4345a3b8ad96d256854e
|
4
|
+
data.tar.gz: 64a303579eb92b6748332d1f15259d4de493c11d32d572fd98a539269f3fffda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5cd414ab9fcebdb55fa961744ac339d668466200972dfd8e0cc0b46a567f183fc00541cb3ffe784173d1eda3fa63f7c2c796eeee5488b7e396d9fb8dd98ff3e
|
7
|
+
data.tar.gz: f5f1e7a1d50cb26f2e61973903e708e255e2bb76248c6e7e7d14b74dd55a6fbb9a13a842dc2f8bf0f33cc7aae70bf33b500e5a337c8fc3af910a60ce108b8f88
|
data/README.md
CHANGED
@@ -65,7 +65,7 @@ The following example means that an exception and a URL will be reported to [Sen
|
|
65
65
|
Tanshuku.configure do |config|
|
66
66
|
config.exception_reporter =
|
67
67
|
lambda { |exception:, original_url:|
|
68
|
-
Sentry.capture_exception(exception, tags: { original_url: })
|
68
|
+
Sentry.capture_exception(exception, tags: { original_url: original_url })
|
69
69
|
}
|
70
70
|
end
|
71
71
|
```
|
@@ -180,7 +180,7 @@ A. Does Tanshuku have some missing features? Please [create an issue](https://gi
|
|
180
180
|
|
181
181
|
1. Fork this repository
|
182
182
|
1. `git clone` your fork
|
183
|
-
1. `bundle install`
|
183
|
+
1. `bundle install`
|
184
184
|
1. Update sources
|
185
185
|
1. `rake`
|
186
186
|
1. Fix `rake` errors if `rake` fails
|
data/app/models/tanshuku/url.rb
CHANGED
@@ -26,10 +26,11 @@ module Tanshuku
|
|
26
26
|
DEFAULT_NAMESPACE = ""
|
27
27
|
|
28
28
|
validates :url, :hashed_url, :key, presence: true
|
29
|
-
validates :url, length: { maximum: proc { Tanshuku.config.max_url_length } }
|
30
29
|
validates :url, format: { with: proc { Tanshuku.config.url_pattern } }, allow_blank: true
|
31
30
|
|
32
31
|
# Don’t validate uniqueness of unique attributes. Raise ActiveRecord::RecordNotUnique instead if the attributes get
|
32
|
+
validate :validates_length_of_url
|
33
|
+
|
33
34
|
# duplicated. Then rescue the exception and try to retry.
|
34
35
|
# validates :url, :hashed_url, :key, uniqueness: true
|
35
36
|
|
@@ -82,8 +83,8 @@ module Tanshuku
|
|
82
83
|
begin
|
83
84
|
transaction do
|
84
85
|
record =
|
85
|
-
create_or_find_by!(hashed_url: hash_url(url, namespace:)) do |r|
|
86
|
-
r.attributes = { url
|
86
|
+
create_or_find_by!(hashed_url: hash_url(url, namespace: namespace)) do |r|
|
87
|
+
r.attributes = { url: url, key: generate_key }
|
87
88
|
end
|
88
89
|
|
89
90
|
record.shortened_url(url_options)
|
@@ -94,15 +95,24 @@ module Tanshuku
|
|
94
95
|
retries += 1
|
95
96
|
retry
|
96
97
|
else
|
97
|
-
report_exception(exception: e, original_url:)
|
98
|
+
report_exception(exception: e, original_url: original_url)
|
98
99
|
original_url
|
99
100
|
end
|
100
101
|
end
|
101
102
|
rescue StandardError => e
|
102
|
-
report_exception(exception: e, original_url:)
|
103
|
+
report_exception(exception: e, original_url: original_url)
|
103
104
|
original_url
|
104
105
|
end
|
105
106
|
|
107
|
+
unless respond_to?(:create_or_find_by!)
|
108
|
+
# https://github.com/rails/rails/blob/v6.0.0/activerecord/lib/active_record/relation.rb#L218-L222
|
109
|
+
def self.create_or_find_by!(attributes, &block)
|
110
|
+
transaction(requires_new: true) { create!(attributes, &block) }
|
111
|
+
rescue ActiveRecord::RecordNotUnique
|
112
|
+
find_by!(attributes)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
106
116
|
# Finds a {Tanshuku::Url} record by a non-shortened URL.
|
107
117
|
#
|
108
118
|
# @param url [String] A non-shortened URL.
|
@@ -112,9 +122,9 @@ module Tanshuku
|
|
112
122
|
# @return [nil] +nil+ unless found.
|
113
123
|
def self.find_by_url(url, namespace: DEFAULT_NAMESPACE)
|
114
124
|
normalized_url = normalize_url(url)
|
115
|
-
hashed_url = hash_url(normalized_url, namespace:)
|
125
|
+
hashed_url = hash_url(normalized_url, namespace: namespace)
|
116
126
|
|
117
|
-
find_by(hashed_url:)
|
127
|
+
find_by(hashed_url: hashed_url)
|
118
128
|
end
|
119
129
|
|
120
130
|
# Normalizes a URL. Adds or removes a trailing slash, removes +?+ for an empty query, and so on. And sorts query
|
@@ -138,7 +148,7 @@ module Tanshuku
|
|
138
148
|
#
|
139
149
|
# @return [String] Depends on your {Tanshuku::Configuration#url_hasher} configuration.
|
140
150
|
def self.hash_url(url, namespace: DEFAULT_NAMESPACE)
|
141
|
-
Tanshuku.config.url_hasher.call(url, namespace:)
|
151
|
+
Tanshuku.config.url_hasher.call(url, namespace: namespace)
|
142
152
|
end
|
143
153
|
|
144
154
|
# Generates a unique key for a shortened URL.
|
@@ -159,7 +169,7 @@ module Tanshuku
|
|
159
169
|
#
|
160
170
|
# @return [void] Depends on your {Tanshuku::Configuration#exception_reporter} configuration.
|
161
171
|
def self.report_exception(exception:, original_url:)
|
162
|
-
Tanshuku.config.exception_reporter.call(exception
|
172
|
+
Tanshuku.config.exception_reporter.call(exception: exception, original_url: original_url)
|
163
173
|
end
|
164
174
|
|
165
175
|
# The record’s shortened URL.
|
@@ -175,6 +185,14 @@ module Tanshuku
|
|
175
185
|
|
176
186
|
Tanshuku::Engine.routes.url_for(url_options)
|
177
187
|
end
|
188
|
+
|
189
|
+
private
|
190
|
+
|
191
|
+
def validates_length_of_url
|
192
|
+
if url && url.length > Tanshuku.config.max_url_length
|
193
|
+
errors.add(:url, :too_long, count: Tanshuku.config.max_url_length)
|
194
|
+
end
|
195
|
+
end
|
178
196
|
end
|
179
197
|
# rubocop:enable Rails/ApplicationRecord
|
180
198
|
end
|
@@ -7,8 +7,7 @@ module Tanshuku
|
|
7
7
|
#
|
8
8
|
# @api private
|
9
9
|
class InstallGenerator < Rails::Generators::Base
|
10
|
-
|
11
|
-
source_root File.expand_path("../templates", _ = __dir__)
|
10
|
+
source_root File.expand_path("../templates", __dir__)
|
12
11
|
|
13
12
|
# Generates a configuration file +config/initializers/tanshuku.rb+.
|
14
13
|
#
|
@@ -42,7 +42,68 @@ module Tanshuku
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
if defined?(ActiveModel::Attributes)
|
46
|
+
include ActiveModel::Attributes
|
47
|
+
else
|
48
|
+
# https://github.com/rails/rails/blob/v5.2.8.1/activemodel/lib/active_model/attributes.rb
|
49
|
+
# https://github.com/rails/rails/blob/v5.2.8.1/activemodel/lib/active_model/type/integer.rb
|
50
|
+
concerning :PetitModelAttributes do
|
51
|
+
const_set :NO_DEFAULT_PROVIDED, Object.new
|
52
|
+
|
53
|
+
class_methods do
|
54
|
+
# rubocop:disable Metrics/MethodLength
|
55
|
+
|
56
|
+
# A petit and limited implementation of `ActiveModel::Attributes`'s `attribute` method for backward
|
57
|
+
# compatibility.
|
58
|
+
#
|
59
|
+
# @param name [Symbol] An attribute name.
|
60
|
+
# @param cast_type [Symbol,nil] A type to cast the attribute's value.
|
61
|
+
# @param default [Object] A default value of the attribute.
|
62
|
+
#
|
63
|
+
# @return [void]
|
64
|
+
def attribute(name, cast_type = nil, default: NO_DEFAULT_PROVIDED)
|
65
|
+
attr_reader name
|
66
|
+
|
67
|
+
case cast_type
|
68
|
+
when nil
|
69
|
+
attr_writer name
|
70
|
+
when :integer
|
71
|
+
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
72
|
+
def #{name}=(value) # def max_url_length=(value)
|
73
|
+
@#{name} = # @max_url_length =
|
74
|
+
case value # case value
|
75
|
+
when true # when true
|
76
|
+
1 # 1
|
77
|
+
when false # when false
|
78
|
+
0 # 0
|
79
|
+
when nil # when nil
|
80
|
+
nil # nil
|
81
|
+
else # else
|
82
|
+
value.to_i rescue nil # value.to_i rescue nil
|
83
|
+
end # end
|
84
|
+
end # end
|
85
|
+
RUBY
|
86
|
+
else
|
87
|
+
raise ArgumentError, "Non-supported cast type: #{cast_type.inspect}"
|
88
|
+
end
|
89
|
+
|
90
|
+
return if default == NO_DEFAULT_PROVIDED
|
91
|
+
|
92
|
+
mod =
|
93
|
+
Module.new do
|
94
|
+
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
95
|
+
def initialize(*args) # def initialize(*args)
|
96
|
+
super # super
|
97
|
+
self.#{name} = #{default.inspect} # self.max_url_length = 10_000
|
98
|
+
end # end
|
99
|
+
RUBY
|
100
|
+
end
|
101
|
+
prepend mod
|
102
|
+
end
|
103
|
+
# rubocop:enable Metrics/MethodLength
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
46
107
|
|
47
108
|
# @!attribute [rw] default_url_options
|
48
109
|
# Default URL options for Rails’ +url_for+. Defaults to +{}+.
|
@@ -166,12 +227,12 @@ module Tanshuku
|
|
166
227
|
# Tanshuku.configure do |config|
|
167
228
|
# config.exception_reporter =
|
168
229
|
# lambda { |exception:, original_url:|
|
169
|
-
# Sentry.capture_exception(exception, tags: { original_url: })
|
230
|
+
# Sentry.capture_exception(exception, tags: { original_url: original_url })
|
170
231
|
# }
|
171
232
|
# end
|
172
233
|
attribute :exception_reporter, default: DefaultExceptionReporter
|
173
234
|
|
174
|
-
def initialize(
|
235
|
+
def initialize(*args)
|
175
236
|
super
|
176
237
|
@mutex = Mutex.new
|
177
238
|
end
|
data/lib/tanshuku/version.rb
CHANGED
data/lib/tanshuku.rb
CHANGED
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
|
9
|
+
TASKNAMES = %i[rubocop spec 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
|
|
@@ -32,7 +32,7 @@ class CheckAll
|
|
32
32
|
command = "bundle exec rake #{taskname}"
|
33
33
|
|
34
34
|
outputs = []
|
35
|
-
outputs << format(TITLE_TEMPLATE, command:)
|
35
|
+
outputs << format(TITLE_TEMPLATE, command: command)
|
36
36
|
|
37
37
|
# Use `PTY.spawn` to get colorized outputs of each command.
|
38
38
|
PTY.spawn(command) do |reader, writer, pid|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tanshuku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kg8m
|
@@ -16,28 +16,34 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.4
|
19
|
+
version: '2.4'
|
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'
|
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:
|
33
|
+
version: '5.1'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '6.0'
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
41
|
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
43
|
+
version: '5.1'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '6.0'
|
41
47
|
description: Tanshuku is a simple and performance aware Rails engine for shortening
|
42
48
|
URLs. Tanshuku generates a shortened URL per a normalized original URL. Tanshuku
|
43
49
|
redirects from a shortened URL to its corresponding original URL.
|
@@ -49,7 +55,6 @@ extra_rdoc_files: []
|
|
49
55
|
files:
|
50
56
|
- LICENSE
|
51
57
|
- README.md
|
52
|
-
- Steepfile
|
53
58
|
- app/controllers/tanshuku/urls_controller.rb
|
54
59
|
- app/models/tanshuku/url.rb
|
55
60
|
- config/locales/en.yml
|
@@ -63,17 +68,6 @@ files:
|
|
63
68
|
- lib/tanshuku/engine.rb
|
64
69
|
- lib/tanshuku/version.rb
|
65
70
|
- 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
|
77
71
|
homepage: https://github.com/kg8m/tanshuku
|
78
72
|
licenses:
|
79
73
|
- MIT
|
@@ -91,14 +85,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
85
|
requirements:
|
92
86
|
- - ">="
|
93
87
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
88
|
+
version: '2.5'
|
89
|
+
- - "<"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '3.0'
|
95
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
93
|
requirements:
|
97
94
|
- - ">="
|
98
95
|
- !ruby/object:Gem::Version
|
99
96
|
version: '0'
|
100
97
|
requirements: []
|
101
|
-
rubygems_version: 3.
|
98
|
+
rubygems_version: 3.1.6
|
102
99
|
signing_key:
|
103
100
|
specification_version: 4
|
104
101
|
summary: Tanshuku is a simple and performance aware Rails engine for shortening URLs.
|
data/Steepfile
DELETED
data/rbs_collection.lock.yaml
DELETED
@@ -1,230 +0,0 @@
|
|
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
DELETED
@@ -1,19 +0,0 @@
|
|
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
|
@@ -1,114 +0,0 @@
|
|
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
|
@@ -1,42 +0,0 @@
|
|
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
|
data/sig/lib/tanshuku/engine.rbs
DELETED
data/sig/lib/tanshuku.rbs
DELETED
data/sig/lib/tasks/check_all.rbs
DELETED
@@ -1,16 +0,0 @@
|
|
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
|