shortener 0.8.2 → 1.0.1

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: 9b5d472a9bc919a4d8908b8aed88d1118d2922d82a9cd8f93d99e955d10d00d7
4
+ data.tar.gz: 2c0668fd8dbf8583b412f5d3cb00e4b959ceb4b2ea8d73619c2404545b6cac58
5
5
  SHA512:
6
- metadata.gz: 62ec7fe6fc1a26fd89804c967a00fffa9d7e9235ecb10d1b338dd188ca5f12bcf964ac983e2bac597b1a97a2b5195002060c81db280355701967a6d1b324bb60
7
- data.tar.gz: 427b8118350ff106e97828caf7ce41433ae1dcc69d67c902e6e871555613e64bd4a5256709a22f3bf4d95c587cc96f43235bd38f6eb91cb17b454a24039337d8
6
+ metadata.gz: 22cb8aaee0f74c741adb61ccc5e8bda54b91a3f60d71c57f5e3adbc411be1fda02d5b1e5a7c71cdb44e5c8cf2fd312a2f9e1797823b296397fdf35ebd64c2be6
7
+ data.tar.gz: 6d364749841bc21a95299285f1e1c108068def18652d304495f034a155b2f2b262801e6c41d1fb9c573b11b57bebe983c91a4311802be2c8aac359e9d0f5ecb8
@@ -0,0 +1,64 @@
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.7'
18
+ - '3.0'
19
+ - '3.2'
20
+ gemfile:
21
+ - rails_4.2.gemfile
22
+ - rails_5.2.gemfile
23
+ - rails_6.0.gemfile
24
+ - rails_6.1.gemfile
25
+ - rails_7.0.gemfile
26
+ include:
27
+ - ruby-version: '2.4'
28
+ gemfile: rails_4.2.gemfile
29
+ bundler-version: 1
30
+ exclude:
31
+ - ruby-version: '2.7'
32
+ gemfile: rails_4.2.gemfile
33
+ - ruby-version: '3.0'
34
+ gemfile: rails_4.2.gemfile
35
+ - ruby-version: '3.2'
36
+ gemfile: rails_4.2.gemfile
37
+ - ruby-version: '3.0'
38
+ gemfile: rails_5.2.gemfile
39
+ - ruby-version: '3.2'
40
+ gemfile: rails_5.2.gemfile
41
+ - ruby-version: '2.4'
42
+ gemfile: rails_6.0.gemfile
43
+ - ruby-version: '3.2'
44
+ gemfile: rails_6.0.gemfile
45
+ - ruby-version: '2.4'
46
+ gemfile: rails_6.1.gemfile
47
+ - ruby-version: '3.2'
48
+ gemfile: rails_6.1.gemfile
49
+ - ruby-version: '2.4'
50
+ gemfile: rails_7.0.gemfile
51
+
52
+ env:
53
+ BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}
54
+
55
+ steps:
56
+ - uses: actions/checkout@v3
57
+ - name: Set up Ruby
58
+ uses: ruby/setup-ruby@v1
59
+ with:
60
+ ruby-version: ${{ matrix.ruby-version }}
61
+ bundler: ${{ matrix.bundler-version }}
62
+ bundler-cache: true
63
+ - name: Run tests
64
+ run: bundle exec rake
data/.gitignore CHANGED
@@ -11,6 +11,7 @@ bin/*
11
11
  *.gem
12
12
  *.swp
13
13
  Gemfile.lock
14
+ .ruby-version
14
15
  .rvmrc
15
16
  .redcar/*
16
17
  gemfiles/*.lock
data/Appraisals CHANGED
@@ -1,17 +1,9 @@
1
- appraise "rails_4" do
1
+ appraise "rails_4.2" 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
- appraise "rails_5.0" do
7
- gem "rails", "~> 5.0.7"
8
- gem "sqlite3", "~> 1.3.6"
9
- end
10
-
11
- appraise "rails_5.1" do
12
- gem "rails", "~> 5.1.6"
13
- end
14
-
15
7
  appraise "rails_5.2" do
16
8
  gem "rails", "~> 5.2.0"
17
9
  end
@@ -19,3 +11,11 @@ end
19
11
  appraise "rails_6.0" do
20
12
  gem "rails", "~> 6.0.0"
21
13
  end
14
+
15
+ appraise "rails_6.1" do
16
+ gem "rails", "~> 6.1.0"
17
+ end
18
+
19
+ appraise "rails_7.0" do
20
+ gem "rails", "~> 7.0.0"
21
+ 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,26 +256,25 @@ 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
- == Origins
259
+ === Configuring a different database for shortened_urls table
260
260
 
261
- For a bit of backstory to Shortener see this {blog post}[http://jamespmcgrath.com/a-simple-link-shortener-in-rails/].
261
+ You can store a `shortened_urls` table in another database and connecting to it by creating a initializer with the following:
262
262
 
263
- == In The Wild
263
+ ```ruby
264
+ ActiveSupport.on_load(:shortener_record) do
265
+ connects_to(database: { writing: :dbname, reading: :dbname_replica })
266
+ end
267
+ ```
264
268
 
265
- Shortener is used in a number of production systems, including, but not limited to:
266
-
267
- - {Doorkeeper - An Event Management Tool}[http://www.doorkeeperhq.com/]
268
- - {1001tweets - Repost your tweets to get more clicks}[http://www.1001tweets.com/]
269
- - {NewsMaker.io - The curated newsletter builder}[https://www.newsmaker.io/]
270
-
271
- If you are using Shortener in your project and would like to be added to this list, please get in touch!
269
+ **Note:** Please, replace `dbname` and `dbname_replica` to match your database configuration.
272
270
 
273
271
  == Contributing
274
272
 
275
273
  We welcome new contributors. Because we're all busy people, and because Shortener
276
274
  is used/relied upon by many projects, it is essential that new Pull Requests
277
275
  are opened with good spec coverage, and a passing build on supported ruby versions
278
- and Rails versions.
276
+ and Rails versions. Please create a single PR per feature/contribution, with as
277
+ few changes per PR as possible to make it easier to review.
279
278
 
280
279
  To contribute:
281
280
 
@@ -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,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
 
@@ -1,7 +1,7 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "http://rubygems.org"
3
+ source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.1.6"
5
+ gem "rails", "~> 6.1.0"
6
6
 
7
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"
6
+
7
+ gemspec path: "../"
@@ -1,5 +1,7 @@
1
+ require "rack"
1
2
  require "rails/engine"
2
3
  require "voight_kampff"
4
+ require "voight_kampff/rails"
3
5
  require "shortener"
4
6
 
5
7
  class Shortener::Engine < ::Rails::Engine #:nodoc:
@@ -1,3 +1,3 @@
1
1
  module Shortener
2
- VERSION = '0.8.2'.freeze
2
+ VERSION = '1.0.1'.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
@@ -14,11 +14,11 @@ Gem::Specification.new do |s|
14
14
  s.homepage = "http://jamespmcgrath.com/projects/shortener"
15
15
  s.required_rubygems_version = "> 2.1.0"
16
16
 
17
- s.add_dependency "voight_kampff", '~> 1.1.2'
17
+ s.add_dependency "voight_kampff", '~> 2.0'
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.1
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: 2023-08-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: voight_kampff
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.1.2
20
+ version: '2.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.1.2
27
+ version: '2.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rails
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -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,13 @@ 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
- - gemfiles/rails_4.gemfile
162
- - gemfiles/rails_5.0.gemfile
163
- - gemfiles/rails_5.1.gemfile
162
+ - gemfiles/rails_4.2.gemfile
164
163
  - gemfiles/rails_5.2.gemfile
165
164
  - gemfiles/rails_6.0.gemfile
165
+ - gemfiles/rails_6.1.gemfile
166
+ - gemfiles/rails_7.0.gemfile
166
167
  - lib/generators/shortener/shortener_generator.rb
167
168
  - lib/generators/shortener/templates/migration.rb
168
169
  - lib/shortener.rb
@@ -215,7 +216,7 @@ files:
215
216
  homepage: http://jamespmcgrath.com/projects/shortener
216
217
  licenses: []
217
218
  metadata: {}
218
- post_install_message:
219
+ post_install_message:
219
220
  rdoc_options: []
220
221
  require_paths:
221
222
  - lib
@@ -230,8 +231,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
231
  - !ruby/object:Gem::Version
231
232
  version: 2.1.0
232
233
  requirements: []
233
- rubygems_version: 3.0.3
234
- signing_key:
234
+ rubyforge_project:
235
+ rubygems_version: 2.7.6
236
+ signing_key:
235
237
  specification_version: 4
236
238
  summary: Shortener is a Rails Engine that makes it easy to create shortened URLs for
237
239
  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
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "http://rubygems.org"
4
-
5
- gem "rails", "~> 5.0.7"
6
- gem "sqlite3", "~> 1.3.6"
7
-
8
- gemspec path: "../"