shortener 0.8.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a65ebf87f18746199fa76ac0a91f3365d0c34b9c969f897c25422370a676355b
4
- data.tar.gz: 8a06527bce6d9f10805d2a97525b04dc631ee1c9115cc3e016bb5263307269a3
3
+ metadata.gz: 12594d11b56f84e7c4654bee681887dc084978604ee158c803e384c839b6a937
4
+ data.tar.gz: 8550a33e8bd06229cd66c5e9f340ba6cd9c49c77acb5481555b23f43ea659883
5
5
  SHA512:
6
- metadata.gz: 62ec7fe6fc1a26fd89804c967a00fffa9d7e9235ecb10d1b338dd188ca5f12bcf964ac983e2bac597b1a97a2b5195002060c81db280355701967a6d1b324bb60
7
- data.tar.gz: 427b8118350ff106e97828caf7ce41433ae1dcc69d67c902e6e871555613e64bd4a5256709a22f3bf4d95c587cc96f43235bd38f6eb91cb17b454a24039337d8
6
+ metadata.gz: 911ad7cc429c015d090760690b53aa5151588f3c384090f293cd608484d0804ba3e72034c97bc31cb99730deabf5c5103045e0ffd89b809dd7c12030b732b57e
7
+ data.tar.gz: 8fe1bd76f2a97dc3a9f2b0c1cfe9b4798591f84654f40eb341724df41e1ed6b4f8ae461d54759b2059163e440cf72b81df8246a7a7715cc68cecc57d3279a1c6
@@ -0,0 +1,66 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ develop ]
6
+ pull_request:
7
+ branches: [ develop ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: true
14
+ matrix:
15
+ ruby-version:
16
+ - '2.4'
17
+ - '2.6'
18
+ - '2.7'
19
+ - '3.0'
20
+ gemfile:
21
+ - rails_4.gemfile
22
+ - rails_5.0.gemfile
23
+ - rails_5.1.gemfile
24
+ - rails_5.2.gemfile
25
+ - rails_6.0.gemfile
26
+ - rails_6.1.gemfile
27
+ - rails_7.0.gemfile
28
+ include:
29
+ - ruby-version: '2.4'
30
+ gemfile: rails_4.gemfile
31
+ bundler-version: 1
32
+ exclude:
33
+ - ruby-version: '2.6'
34
+ gemfile: rails_4.gemfile
35
+ - ruby-version: '2.7'
36
+ gemfile: rails_4.gemfile
37
+ - ruby-version: '3.0'
38
+ gemfile: rails_4.gemfile
39
+ - ruby-version: '3.0'
40
+ gemfile: rails_5.0.gemfile
41
+ - ruby-version: '3.0'
42
+ gemfile: rails_5.1.gemfile
43
+ - ruby-version: '3.0'
44
+ gemfile: rails_5.2.gemfile
45
+ - ruby-version: '2.4'
46
+ gemfile: rails_6.0.gemfile
47
+ - ruby-version: '2.4'
48
+ gemfile: rails_6.1.gemfile
49
+ - ruby-version: '2.4'
50
+ gemfile: rails_7.0.gemfile
51
+ - ruby-version: '2.6'
52
+ gemfile: rails_7.0.gemfile
53
+
54
+ env:
55
+ BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}
56
+
57
+ steps:
58
+ - uses: actions/checkout@v2
59
+ - name: Set up Ruby
60
+ uses: ruby/setup-ruby@v1
61
+ with:
62
+ ruby-version: ${{ matrix.ruby-version }}
63
+ bundler: ${{ matrix.bundler-version }}
64
+ bundler-cache: true
65
+ - name: Run tests
66
+ run: bundle exec rake
data/Appraisals CHANGED
@@ -1,15 +1,18 @@
1
1
  appraise "rails_4" do
2
2
  gem "rails", "~> 4.2.10"
3
+ gem "rspec-rails", "~> 3.0"
3
4
  gem "sqlite3", "~> 1.3.6"
4
5
  end
5
6
 
6
7
  appraise "rails_5.0" do
7
8
  gem "rails", "~> 5.0.7"
9
+ gem "rspec-rails", "~> 4.0"
8
10
  gem "sqlite3", "~> 1.3.6"
9
11
  end
10
12
 
11
13
  appraise "rails_5.1" do
12
14
  gem "rails", "~> 5.1.6"
15
+ gem "rspec-rails", "~> 4.0"
13
16
  end
14
17
 
15
18
  appraise "rails_5.2" do
@@ -19,3 +22,11 @@ end
19
22
  appraise "rails_6.0" do
20
23
  gem "rails", "~> 6.0.0"
21
24
  end
25
+
26
+ appraise "rails_6.1" do
27
+ gem "rails", "~> 6.1.0"
28
+ end
29
+
30
+ appraise "rails_7.0" do
31
+ gem "rails", "~> 7.0.0.rc1"
32
+ end
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- {<img src="https://secure.travis-ci.org/jpmcgrath/shortener.svg?branch=master" alt="Build Status" />}[http://travis-ci.org/jpmcgrath/shortener]
1
+ {<img src="https://github.com/jpmcgrath/shortener/actions/workflows/ruby.yml/badge.svg" alt="Build Status" />}[https://github.com/jpmcgrath/shortener/actions]
2
2
  {<img src="https://codeclimate.com/github/jpmcgrath/shortener/badges/gpa.svg" />}[https://codeclimate.com/github/jpmcgrath/shortener]
3
3
  {<img src="https://badge.fury.io/rb/shortener.svg" alt="Gem version" />}[http://badge.fury.io/rb/shortener]
4
4
 
@@ -65,7 +65,7 @@ migration:
65
65
 
66
66
  == Installation
67
67
 
68
- Shortener is compatible with Rails v3, v4, v5, & v6. To install, add to your Gemfile:
68
+ Shortener is compatible with Rails v4, v5, & v6. To install, add to your Gemfile:
69
69
 
70
70
  gem 'shortener'
71
71
 
@@ -159,11 +159,11 @@ You can pass in your own key when generating a shortened URL. This should be uni
159
159
  You can create expirable URLs.
160
160
  Probably, most of the time it would be used with owner:
161
161
 
162
- Shortener::ShortenedUrl.generate("example.com/page", user, expires_at: 24.hours.since)
162
+ Shortener::ShortenedUrl.generate("example.com/page", owner: user, expires_at: 24.hours.since)
163
163
 
164
- You can omit owner passing nil instead:
164
+ You can omit owner:
165
165
 
166
- Shortener::ShortenedUrl.generate("example.com/page", nil, expires_at: 24.hours.since)
166
+ Shortener::ShortenedUrl.generate("example.com/page", expires_at: 24.hours.since)
167
167
 
168
168
  === Fresh Links
169
169
 
@@ -256,6 +256,18 @@ If you want more things to happen when a user accesses one of your short urls, y
256
256
 
257
257
  *note:* If no shortened URL is found, the url will be `default_redirect` or `/`
258
258
 
259
+ === Configuring a different database for shortened_urls table
260
+
261
+ You can store a `shortened_urls` table in another database and connecting to it by creating a initializer with the following:
262
+
263
+ ```ruby
264
+ ActiveSupport.on_load(:shortener_record) do
265
+ connects_to(database: { writing: :dbname, reading: :dbname_replica })
266
+ end
267
+ ```
268
+
269
+ **Note:** Please, replace `dbname` and `dbname_replica` to match your database configuration.
270
+
259
271
  == Origins
260
272
 
261
273
  For a bit of backstory to Shortener see this {blog post}[http://jamespmcgrath.com/a-simple-link-shortener-in-rails/].
@@ -0,0 +1,5 @@
1
+ class Shortener::Record < ActiveRecord::Base #:nodoc:
2
+ self.abstract_class = true
3
+ end
4
+
5
+ ActiveSupport.run_load_hooks :shortener_record, Shortener::Record
@@ -1,4 +1,4 @@
1
- class Shortener::ShortenedUrl < ActiveRecord::Base
1
+ class Shortener::ShortenedUrl < Shortener::Record
2
2
 
3
3
  REGEX_LINK_HAS_PROTOCOL = Regexp.new('\Ahttp:\/\/|\Ahttps:\/\/', Regexp::IGNORECASE)
4
4
 
@@ -15,7 +15,7 @@ class Shortener::ShortenedUrl < ActiveRecord::Base
15
15
  end
16
16
 
17
17
  # exclude records in which expiration time is set and expiration time is greater than current time
18
- scope :unexpired, -> { where(arel_table[:expires_at].eq(nil).or(arel_table[:expires_at].gt(::Time.current.to_s(:db)))) }
18
+ scope :unexpired, -> { where(arel_table[:expires_at].eq(nil).or(arel_table[:expires_at].gt(::Time.current))) }
19
19
 
20
20
  attr_accessor :custom_key
21
21
 
@@ -1,8 +1,9 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "http://rubygems.org"
3
+ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 4.2.10"
6
+ gem "rspec-rails", "~> 3.0"
6
7
  gem "sqlite3", "~> 1.3.6"
7
8
 
8
9
  gemspec path: "../"
@@ -1,8 +1,9 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "http://rubygems.org"
3
+ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 5.0.7"
6
+ gem "rspec-rails", "~> 4.0"
6
7
  gem "sqlite3", "~> 1.3.6"
7
8
 
8
9
  gemspec path: "../"
@@ -1,7 +1,8 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "http://rubygems.org"
3
+ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 5.1.6"
6
+ gem "rspec-rails", "~> 4.0"
6
7
 
7
8
  gemspec path: "../"
@@ -1,6 +1,6 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "http://rubygems.org"
3
+ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 5.2.0"
6
6
 
@@ -1,6 +1,6 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "http://rubygems.org"
3
+ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 6.0.0"
6
6
 
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.1.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 7.0.0.rc1"
6
+
7
+ gemspec path: "../"
@@ -1,3 +1,3 @@
1
1
  module Shortener
2
- VERSION = '0.8.2'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
data/lib/shortener.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "active_support/dependencies"
1
+ require "active_support"
2
2
 
3
3
  module Shortener
4
4
 
data/shortener.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.add_development_dependency "rails", '>= 3'
20
20
  s.add_development_dependency "sqlite3"
21
- s.add_development_dependency "rspec-rails", '~> 3.6.0'
21
+ s.add_development_dependency "rspec-rails"
22
22
  s.add_development_dependency "shoulda-matchers"
23
23
  s.add_development_dependency "faker"
24
24
  s.add_development_dependency "byebug"
data/spec/spec_helper.rb CHANGED
@@ -10,6 +10,7 @@ require 'faker'
10
10
  require 'capybara/rspec'
11
11
 
12
12
  Rails.backtrace_cleaner.remove_silencers!
13
+ ActiveRecord::Base.logger = Logger.new(STDOUT) if ENV['LOG_STDOUT']
13
14
 
14
15
  Shoulda::Matchers.configure do |config|
15
16
  config.integrate do |with|
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shortener
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James P. McGrath
8
8
  - Michael Reinsch
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-05-06 00:00:00.000000000 Z
12
+ date: 2022-08-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: voight_kampff
@@ -57,16 +57,16 @@ dependencies:
57
57
  name: rspec-rails
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 3.6.0
62
+ version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 3.6.0
69
+ version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: shoulda-matchers
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -148,8 +148,8 @@ executables: []
148
148
  extensions: []
149
149
  extra_rdoc_files: []
150
150
  files:
151
+ - ".github/workflows/ruby.yml"
151
152
  - ".gitignore"
152
- - ".travis.yml"
153
153
  - Appraisals
154
154
  - Gemfile
155
155
  - MIT-LICENSE
@@ -157,12 +157,15 @@ files:
157
157
  - Rakefile
158
158
  - app/controllers/shortener/shortened_urls_controller.rb
159
159
  - app/helpers/shortener/shortener_helper.rb
160
+ - app/models/shortener/record.rb
160
161
  - app/models/shortener/shortened_url.rb
161
162
  - gemfiles/rails_4.gemfile
162
163
  - gemfiles/rails_5.0.gemfile
163
164
  - gemfiles/rails_5.1.gemfile
164
165
  - gemfiles/rails_5.2.gemfile
165
166
  - gemfiles/rails_6.0.gemfile
167
+ - gemfiles/rails_6.1.gemfile
168
+ - gemfiles/rails_7.0.gemfile
166
169
  - lib/generators/shortener/shortener_generator.rb
167
170
  - lib/generators/shortener/templates/migration.rb
168
171
  - lib/shortener.rb
@@ -215,7 +218,7 @@ files:
215
218
  homepage: http://jamespmcgrath.com/projects/shortener
216
219
  licenses: []
217
220
  metadata: {}
218
- post_install_message:
221
+ post_install_message:
219
222
  rdoc_options: []
220
223
  require_paths:
221
224
  - lib
@@ -230,8 +233,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
233
  - !ruby/object:Gem::Version
231
234
  version: 2.1.0
232
235
  requirements: []
233
- rubygems_version: 3.0.3
234
- signing_key:
236
+ rubyforge_project:
237
+ rubygems_version: 2.7.6
238
+ signing_key:
235
239
  specification_version: 4
236
240
  summary: Shortener is a Rails Engine that makes it easy to create shortened URLs for
237
241
  your rails application.
data/.travis.yml DELETED
@@ -1,32 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.2
5
- - 2.3
6
- - 2.4
7
- - 2.5
8
- - 2.6
9
- - 2.7
10
-
11
- gemfile:
12
- - gemfiles/rails_4.gemfile
13
- - gemfiles/rails_5.0.gemfile
14
- - gemfiles/rails_5.1.gemfile
15
- - gemfiles/rails_5.2.gemfile
16
- - gemfiles/rails_6.0.gemfile
17
-
18
- jobs:
19
- fast_finish: true
20
- exclude:
21
- - rvm: 2.6
22
- gemfile: gemfiles/rails_4.gemfile
23
- - rvm: 2.7
24
- gemfile: gemfiles/rails_4.gemfile
25
- - rvm: 2.2
26
- gemfile: gemfiles/rails_5.2.gemfile
27
- - rvm: 2.2
28
- gemfile: gemfiles/rails_6.0.gemfile
29
- - rvm: 2.3
30
- gemfile: gemfiles/rails_6.0.gemfile
31
- - rvm: 2.4
32
- gemfile: gemfiles/rails_6.0.gemfile