tanshuku 4.0.0 → 4.0.2

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: 60ef893ce52de6a2a3e9c76b217ec13fc11faa6aac8ddac739205dcf9336fdde
4
- data.tar.gz: e764fe77479fb67ebd3a592525a442654c1ffe0e57e01f46a28710989c7a4fd7
3
+ metadata.gz: 076e5ce40463d17a9fa6361a0e8a317fb15d1428300921e8527b6765a2f62ee8
4
+ data.tar.gz: bd412ced4ce541d9b4896ea8382caeaf6ec9a4ea7cd8c33e3f4364c643b93538
5
5
  SHA512:
6
- metadata.gz: c4e7d22a8d8572a6ed2473f94eb1e659cb853b1b204c6aa6f199710228bafe190ff20761b60c2d27547dfae291ffe55c7f4e38ecd56678d3984e2f82a1590f4f
7
- data.tar.gz: b373b1c24e1f6746de4003f394d583c9ed4a91256f90e34237a1db8ea1a590a63041c639e34f90b155cc36568e755dd1c3be773999283af2c52ae15a48940722
6
+ metadata.gz: 1e1f3ad12c2f5d59c9536ea37a11018502391e455693cf75ea54b94cacee202a0247483978e4192be13886c28ccf67db380d528f6467894204db952858d2fbb5
7
+ data.tar.gz: '07801692da343d445145619b9ac9c87895a1c0644c60864ac24bd2721a948558c644ea8354fa4e8ea254fe1b95d4ec8eef0d0fdbc3ab8617c697bebe3e6475d9'
@@ -167,6 +167,10 @@ module Tanshuku
167
167
  # @param url_options [Hash] An option for Rails’ +url_for+.
168
168
  #
169
169
  # @return [String] A shortened URL.
170
+ #
171
+ # @note
172
+ # In Rails 8.0 or later, this method loads the routes before calling +url_for+ as Tanshuku depends on them.
173
+ # cf. https://github.com/rails/rails/pull/52353
170
174
  def shortened_url(url_options = {})
171
175
  url_options = url_options.symbolize_keys
172
176
  url_options[:controller] = "tanshuku/urls"
@@ -175,6 +179,25 @@ module Tanshuku
175
179
 
176
180
  Tanshuku::Engine.routes.url_for(url_options)
177
181
  end
182
+
183
+ case Gem::Version.new(Rails.version)
184
+ when "7.0"..."8.0"
185
+ # Don’t define `#shortened_url` in this branch because YARD doesn’t recognize the method.
186
+ else
187
+ # Overwrite the `#shortened_url` in Rails 8.0 or later.
188
+ # rubocop:disable Lint/DuplicateMethods
189
+ def shortened_url(url_options = {})
190
+ Rails.application.reload_routes_unless_loaded
191
+
192
+ url_options = url_options.symbolize_keys
193
+ url_options[:controller] = "tanshuku/urls"
194
+ url_options[:action] = :show
195
+ url_options[:key] = key
196
+
197
+ Tanshuku::Engine.routes.url_for(url_options)
198
+ end
199
+ # rubocop:enable Lint/DuplicateMethods
200
+ end
178
201
  end
179
202
  # rubocop:enable Rails/ApplicationRecord
180
203
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class CreateTanshukuUrls < ActiveRecord::Migration[7.0]
3
+ class CreateTanshukuUrls < ActiveRecord::Migration[Rails::VERSION::STRING.to_f]
4
4
  def change
5
5
  create_table :tanshuku_urls do |t|
6
6
  t.text :url, null: false
@@ -11,7 +11,7 @@ class CreateTanshukuUrls < ActiveRecord::Migration[7.0]
11
11
  # You might adjust the `limit: 20` depending on `.key_length` and `.key_generator` of `Tanshuku.config`.
12
12
  t.string :key, null: false, limit: 20, index: { unique: true }, comment: "cf. Tanshuku::Url.generate_key"
13
13
 
14
- t.datetime :created_at, null: false, precision: nil
14
+ t.datetime :created_at, null: false
15
15
  end
16
16
  end
17
17
  end
@@ -24,8 +24,16 @@ module Tanshuku
24
24
  # rubocop:disable Rails/TimeZone
25
25
  old_filename = "20230220123456_create_tanshuku_urls.rb"
26
26
  new_filename = old_filename.sub("20230220123456", Time.now.strftime("%Y%m%d%H%M%S"))
27
- copy_file "../../../db/migrate/#{old_filename}", "db/migrate/#{new_filename}"
28
27
  # rubocop:enable Rails/TimeZone
28
+
29
+ old_filepath = "../../../db/migrate/#{old_filename}"
30
+ new_filepath = "db/migrate/#{new_filename}"
31
+
32
+ copy_file old_filepath, new_filepath
33
+
34
+ # rubocop:disable Lint/NumberConversion
35
+ gsub_file new_filepath, "Rails::VERSION::STRING.to_f", Rails::VERSION::STRING.to_f.to_s
36
+ # rubocop:enable Lint/NumberConversion
29
37
  end
30
38
  end
31
39
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tanshuku
4
- VERSION = "4.0.0"
4
+ VERSION = "4.0.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanshuku
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kg8m
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-16 00:00:00.000000000 Z
10
+ date: 2024-12-28 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: addressable
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 2.4.0
18
+ version: '2.4'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 2.4.0
25
+ version: '2.4'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rails
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 7.0.0
32
+ version: '7.0'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 7.0.0
39
+ version: '7.0'
41
40
  description: Tanshuku is a simple and performance aware Rails engine for shortening
42
41
  URLs. Tanshuku generates a shortened URL per a normalized original URL. Tanshuku
43
42
  redirects from a shortened URL to its corresponding original URL.
@@ -61,7 +60,6 @@ files:
61
60
  - lib/tanshuku/configuration.rb
62
61
  - lib/tanshuku/engine.rb
63
62
  - lib/tanshuku/version.rb
64
- - lib/tasks/check_all.rb
65
63
  - sig/app/controllers/tanshuku/urls_controller.rbs
66
64
  - sig/app/models/tanshuku/url.rbs
67
65
  - sig/db/migrate/create_tanshuku_urls.rbs
@@ -70,7 +68,6 @@ files:
70
68
  - sig/lib/tanshuku/configuration.rbs
71
69
  - sig/lib/tanshuku/engine.rbs
72
70
  - sig/lib/tanshuku/version.rbs
73
- - sig/lib/tasks/check_all.rbs
74
71
  homepage: https://github.com/kg8m/tanshuku
75
72
  licenses:
76
73
  - MIT
@@ -80,7 +77,6 @@ metadata:
80
77
  changelog_uri: https://github.com/kg8m/tanshuku/releases
81
78
  documentation_uri: https://kg8m.github.io/tanshuku/
82
79
  rubygems_mfa_required: 'true'
83
- post_install_message:
84
80
  rdoc_options: []
85
81
  require_paths:
86
82
  - lib
@@ -95,8 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
91
  - !ruby/object:Gem::Version
96
92
  version: '0'
97
93
  requirements: []
98
- rubygems_version: 3.5.22
99
- signing_key:
94
+ rubygems_version: 3.6.2
100
95
  specification_version: 4
101
96
  summary: Tanshuku is a simple and performance aware Rails engine for shortening URLs.
102
97
  test_files: []
@@ -1,69 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "English"
4
- require "io/console"
5
- require "paint"
6
- require "pty"
7
-
8
- class CheckAll
9
- TASKNAMES = %i[rubocop spec steep:check yard:check].freeze
10
- LINE = Paint["-" * (IO.console or raise).winsize[1], :bold]
11
- TITLE_TEMPLATE = Paint["\n#{LINE}\nExecute: %<command>s\n#{LINE}\n\n", :bold]
12
-
13
- attr_reader :failed_commands
14
-
15
- def self.call
16
- new.call
17
- end
18
-
19
- def initialize
20
- @failed_commands = []
21
- end
22
-
23
- def call
24
- # rubocop:disable ThreadSafety/NewThread
25
- TASKNAMES.map { |taskname| Thread.new(taskname, &executor) }.each(&:join)
26
- # rubocop:enable ThreadSafety/NewThread
27
- output_result
28
- end
29
-
30
- private
31
-
32
- def executor
33
- lambda do |taskname|
34
- command = "bundle exec rake #{taskname}"
35
-
36
- outputs = []
37
- outputs << format(TITLE_TEMPLATE, command:)
38
-
39
- # Use `PTY.spawn` to get colorized outputs of each command.
40
- PTY.spawn(command) do |reader, writer, pid|
41
- writer.close
42
-
43
- while (output = reader.gets)
44
- outputs << output
45
- end
46
-
47
- Process.wait(pid)
48
- end
49
- failed_commands << command unless $CHILD_STATUS&.success?
50
-
51
- puts outputs.join
52
- end
53
- end
54
-
55
- def output_result
56
- puts ""
57
- puts LINE
58
- puts Paint["Result", :bold]
59
- puts LINE
60
-
61
- if failed_commands.empty?
62
- puts Paint["\nAll checks are OK.", :green, :bold]
63
- else
64
- puts Paint["\nChecks failed!!\n", :red, :bold]
65
- puts failed_commands.map { |command| " - #{command}" }.join("\n")
66
- abort ""
67
- end
68
- end
69
- end
@@ -1,18 +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 initialize: () -> void
9
-
10
- def self.call: () -> void
11
-
12
- def call: () -> void
13
-
14
- private
15
-
16
- def executor: () -> ^(*String) -> void
17
- def output_result: () -> void
18
- end