shortener 0.8.2 → 1.0.0

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: 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