shortener 0.6.2 → 0.7.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 +4 -4
- data/.travis.yml +14 -3
- data/Appraisals +15 -0
- data/README.rdoc +5 -5
- data/app/controllers/shortener/shortened_urls_controller.rb +0 -2
- data/app/models/shortener/shortened_url.rb +12 -44
- data/gemfiles/rails_4.gemfile +7 -0
- data/gemfiles/rails_5.0.gemfile +7 -0
- data/gemfiles/rails_5.1.gemfile +7 -0
- data/gemfiles/rails_5.2.gemfile +7 -0
- data/lib/generators/shortener/templates/migration.rb +4 -4
- data/lib/shortener/active_record_extension.rb +9 -0
- data/lib/shortener/engine.rb +1 -0
- data/lib/shortener/version.rb +1 -1
- data/shortener.gemspec +9 -5
- data/spec/controllers/shortened_urls_controller_spec.rb +20 -5
- data/spec/dummy/db/migrate/20120213084304_create_shortened_urls_table.rb +2 -2
- data/spec/dummy/db/migrate/20120214023758_create_users.rb +1 -1
- data/spec/dummy/db/migrate/20150919033038_change_url_field_to_text_on_shortened_url.rb +1 -1
- data/spec/dummy/db/migrate/20150919033108_add_expires_at_to_shortened_url.rb +1 -1
- data/spec/dummy/db/migrate/20161104055303_add_category_to_shortened_url.rb +1 -1
- data/spec/models/shortened_url_spec.rb +7 -9
- data/spec/spec_helper.rb +5 -1
- metadata +39 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dcaac83914269aad38d35834f0a8550ce8ccb51
|
4
|
+
data.tar.gz: 31f10e8bd149d9a9ed5378e136571e6a0d5ce2e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e87227bf0b46869caec0e518631104d93f245d79746d25606ae4790ee9f912ebdf5d1bb691c132be918a0736cfdf568137c8176ffe5ba3c056c122d3260411f
|
7
|
+
data.tar.gz: e1626bae89579ca2928e24d6f093432220464b34fb42beab57852f739200416576789216f82fac1b17ab0b0710ca10027029a5d6495262a7a2aa4184bd1cca55
|
data/.travis.yml
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
language: ruby
|
2
|
+
|
2
3
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
4
|
+
- 2.2.10
|
5
|
+
- 2.3
|
6
|
+
- 2.4
|
7
|
+
- 2.5
|
8
|
+
|
9
|
+
matrix:
|
10
|
+
fast_finish: true
|
11
|
+
|
12
|
+
gemfile:
|
13
|
+
- gemfiles/rails_4.gemfile
|
14
|
+
- gemfiles/rails_5.0.gemfile
|
15
|
+
- gemfiles/rails_5.1.gemfile
|
16
|
+
- gemfiles/rails_5.2.gemfile
|
data/Appraisals
ADDED
data/README.rdoc
CHANGED
@@ -33,21 +33,21 @@ v0.5.2 introduced the ability to set an expiration date for a shortened URL. The
|
|
33
33
|
are stored in a expires_at column in the database, which can be added to your schema with the following
|
34
34
|
migration:
|
35
35
|
|
36
|
-
class AddExpiresAtToShortenedUrl < ActiveRecord::Migration
|
36
|
+
class AddExpiresAtToShortenedUrl < ActiveRecord::Migration[4.2]
|
37
37
|
def change
|
38
38
|
add_column :shortened_urls, :expires_at, :datetime
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
=== v0.5.6 to v0.6.1
|
43
|
-
v0.6.1 introduced the ability to
|
44
|
-
is stored in a string column in the database, which
|
43
|
+
v0.6.1 introduced the ability to categorize a shortened URL. The category value
|
44
|
+
is stored in a string column in the database, which must be added to your schema with the following
|
45
45
|
migration:
|
46
46
|
|
47
|
-
bundle exec rails g migration add_category_to_shortened_url
|
47
|
+
bundle exec rails g migration add_category_to_shortened_url category:string:index
|
48
48
|
|
49
49
|
|
50
|
-
class AddCategoryToShortenedUrl < ActiveRecord::Migration
|
50
|
+
class AddCategoryToShortenedUrl < ActiveRecord::Migration[4.2]
|
51
51
|
def change
|
52
52
|
add_column :shortened_urls, :category, :string
|
53
53
|
add_index :shortened_urls, :category
|
@@ -4,6 +4,8 @@ class Shortener::ShortenedUrl < ActiveRecord::Base
|
|
4
4
|
|
5
5
|
validates :url, presence: true
|
6
6
|
|
7
|
+
before_create :generate_unique_key
|
8
|
+
|
7
9
|
# allows the shortened link to be associated with a user
|
8
10
|
belongs_to :owner, polymorphic: true
|
9
11
|
|
@@ -47,7 +49,6 @@ class Shortener::ShortenedUrl < ActiveRecord::Base
|
|
47
49
|
|
48
50
|
scope.where(url: clean_url(destination_url), category: category).send(
|
49
51
|
creation_method,
|
50
|
-
unique_key: custom_key,
|
51
52
|
custom_key: custom_key,
|
52
53
|
expires_at: expires_at
|
53
54
|
)
|
@@ -93,12 +94,14 @@ class Shortener::ShortenedUrl < ActiveRecord::Base
|
|
93
94
|
end
|
94
95
|
|
95
96
|
def self.merge_params_to_url(url: nil, params: {})
|
96
|
-
params.
|
97
|
+
if params.respond_to?(:permit!)
|
98
|
+
params = params.permit!.to_h.with_indifferent_access.except!(:id, :action, :controller)
|
99
|
+
end
|
97
100
|
|
98
101
|
if params.present?
|
99
102
|
uri = URI.parse(url)
|
100
103
|
existing_params = Rack::Utils.parse_nested_query(uri.query)
|
101
|
-
uri.query = existing_params.
|
104
|
+
uri.query = existing_params.with_indifferent_access.merge(params).to_query
|
102
105
|
url = uri.to_s
|
103
106
|
end
|
104
107
|
|
@@ -106,11 +109,7 @@ class Shortener::ShortenedUrl < ActiveRecord::Base
|
|
106
109
|
end
|
107
110
|
|
108
111
|
def increment_usage_count
|
109
|
-
|
110
|
-
ActiveRecord::Base.connection_pool.with_connection do |conn|
|
111
|
-
increment!(:use_count)
|
112
|
-
end
|
113
|
-
end
|
112
|
+
self.class.increment_counter(:use_count, id)
|
114
113
|
end
|
115
114
|
|
116
115
|
def to_param
|
@@ -119,46 +118,15 @@ class Shortener::ShortenedUrl < ActiveRecord::Base
|
|
119
118
|
|
120
119
|
private
|
121
120
|
|
122
|
-
|
123
|
-
CREATE_METHOD_NAME =
|
124
|
-
if Rails::VERSION::MAJOR >= 5
|
125
|
-
"_create_record"
|
126
|
-
elsif Rails::VERSION::MAJOR == 4
|
127
|
-
# And again in 4.0.6/4.1.2
|
128
|
-
if Rails::VERSION::MAJOR == 4 && (
|
129
|
-
((Rails::VERSION::MINOR == 0) && (Rails::VERSION::TINY < 6)) ||
|
130
|
-
((Rails::VERSION::MINOR == 1) && (Rails::VERSION::TINY < 2)))
|
131
|
-
"create_record"
|
132
|
-
else
|
133
|
-
"_create_record"
|
134
|
-
end
|
135
|
-
else
|
136
|
-
"create"
|
137
|
-
end
|
138
|
-
|
139
|
-
# we'll rely on the DB to make sure the unique key is really unique.
|
140
|
-
# if it isn't unique, the unique index will catch this and raise an error
|
141
|
-
define_method CREATE_METHOD_NAME do
|
142
|
-
count = 0
|
121
|
+
def generate_unique_key
|
143
122
|
begin
|
144
|
-
self.unique_key = custom_key ||
|
145
|
-
|
146
|
-
|
147
|
-
logger.info("Failed to generate ShortenedUrl with unique_key: #{unique_key}")
|
148
|
-
self.unique_key = nil
|
149
|
-
if (count +=1) < 5
|
150
|
-
logger.info("retrying with different unique key")
|
151
|
-
retry
|
152
|
-
else
|
153
|
-
logger.info("too many retries, giving up")
|
154
|
-
raise
|
155
|
-
end
|
156
|
-
end
|
123
|
+
self.unique_key = custom_key || self.class.unique_key_candidate
|
124
|
+
self.custom_key = nil
|
125
|
+
end while self.class.exists?(unique_key: unique_key) && custom_key.blank?
|
157
126
|
end
|
158
127
|
|
159
|
-
def
|
128
|
+
def self.unique_key_candidate
|
160
129
|
charset = ::Shortener.key_chars
|
161
130
|
(0...::Shortener.unique_key_length).map{ charset[rand(charset.size)] }.join
|
162
131
|
end
|
163
|
-
|
164
132
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class CreateShortenedUrlsTable < ActiveRecord::Migration
|
1
|
+
class CreateShortenedUrlsTable < ActiveRecord::Migration[4.2]
|
2
2
|
def change
|
3
3
|
create_table :shortened_urls do |t|
|
4
4
|
# we can link this to a user for interesting things
|
@@ -11,8 +11,8 @@ class CreateShortenedUrlsTable < ActiveRecord::Migration
|
|
11
11
|
# the unique key
|
12
12
|
t.string :unique_key, limit: 10, null: false
|
13
13
|
|
14
|
-
# a
|
15
|
-
t.string :
|
14
|
+
# a category to help categorize shortened urls
|
15
|
+
t.string :category
|
16
16
|
|
17
17
|
# how many times the link has been clicked
|
18
18
|
t.integer :use_count, null: false, default: 0
|
@@ -28,6 +28,6 @@ class CreateShortenedUrlsTable < ActiveRecord::Migration
|
|
28
28
|
add_index :shortened_urls, :unique_key, unique: true
|
29
29
|
add_index :shortened_urls, :url
|
30
30
|
add_index :shortened_urls, [:owner_id, :owner_type]
|
31
|
-
add_index :shortened_urls, :
|
31
|
+
add_index :shortened_urls, :category
|
32
32
|
end
|
33
33
|
end
|
@@ -3,3 +3,12 @@ module Shortener::ActiveRecordExtension
|
|
3
3
|
has_many :shortened_urls, class_name: "::Shortener::ShortenedUrl", as: :owner
|
4
4
|
end
|
5
5
|
end
|
6
|
+
|
7
|
+
if Rails::VERSION::MAJOR < 5 && !ActiveRecord::Migration.respond_to?(:[])
|
8
|
+
module VersionedMigrationPatch
|
9
|
+
def [](*args)
|
10
|
+
ActiveRecord::Migration
|
11
|
+
end
|
12
|
+
end
|
13
|
+
ActiveRecord::Migration.extend VersionedMigrationPatch
|
14
|
+
end
|
data/lib/shortener/engine.rb
CHANGED
data/lib/shortener/version.rb
CHANGED
data/shortener.gemspec
CHANGED
@@ -13,14 +13,18 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.email = [ "gems@jamespmcgrath.com", "michael@mobalean.com" ]
|
14
14
|
s.homepage = "http://jamespmcgrath.com/projects/shortener"
|
15
15
|
s.rubyforge_project = "shortener"
|
16
|
-
s.required_rubygems_version = "> 1.
|
17
|
-
|
18
|
-
s.add_dependency "voight_kampff", '~>1.
|
16
|
+
s.required_rubygems_version = "> 2.1.0"
|
17
|
+
|
18
|
+
s.add_dependency "voight_kampff", '~> 1.1.2'
|
19
|
+
|
20
|
+
s.add_development_dependency "rails", '>= 3'
|
19
21
|
s.add_development_dependency "sqlite3"
|
20
|
-
s.add_development_dependency "rspec-rails", '~> 3.
|
21
|
-
s.add_development_dependency "shoulda-matchers"
|
22
|
+
s.add_development_dependency "rspec-rails", '~> 3.6.0'
|
23
|
+
s.add_development_dependency "shoulda-matchers"
|
22
24
|
s.add_development_dependency "faker"
|
23
25
|
s.add_development_dependency "byebug"
|
26
|
+
s.add_development_dependency "appraisal"
|
27
|
+
|
24
28
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
25
29
|
s.require_path = 'lib'
|
26
30
|
end
|
@@ -8,7 +8,11 @@ describe Shortener::ShortenedUrlsController, type: :controller do
|
|
8
8
|
describe '#show' do
|
9
9
|
let(:params) { {} }
|
10
10
|
before do
|
11
|
-
|
11
|
+
if Rails::VERSION::MAJOR < 5
|
12
|
+
get :show, { id: key }.merge(params)
|
13
|
+
else
|
14
|
+
get :show, params: { id: key }.merge(params)
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
18
|
context 'valid keys' do
|
@@ -20,21 +24,28 @@ describe Shortener::ShortenedUrlsController, type: :controller do
|
|
20
24
|
end
|
21
25
|
|
22
26
|
context "when request is not from an human" do
|
27
|
+
let(:run_action!) do
|
28
|
+
if Rails::VERSION::MAJOR < 5
|
29
|
+
get :show, { id: key }
|
30
|
+
else
|
31
|
+
get :show, params: { id: key }
|
32
|
+
end
|
33
|
+
end
|
23
34
|
before do
|
24
|
-
allow_any_instance_of(
|
35
|
+
allow_any_instance_of(ActionController::TestRequest).to receive(:human?).and_return(false)
|
25
36
|
end
|
26
37
|
context 'Shortener.ignore_robots == true' do
|
27
38
|
it "calls fetch with token with track argument as false" do
|
28
39
|
Shortener.ignore_robots = true
|
29
40
|
expect(Shortener::ShortenedUrl).to receive(:fetch_with_token).with(hash_including(track: false)).and_call_original
|
30
|
-
|
41
|
+
run_action!
|
31
42
|
end
|
32
43
|
end
|
33
44
|
context 'Shortener.ignore_robots == false (default)' do
|
34
45
|
it "calls fetch with token with track argument as true" do
|
35
46
|
Shortener.ignore_robots = false
|
36
47
|
expect(Shortener::ShortenedUrl).to receive(:fetch_with_token).with(hash_including(track: true)).and_call_original
|
37
|
-
|
48
|
+
run_action!
|
38
49
|
end
|
39
50
|
end
|
40
51
|
end
|
@@ -97,7 +108,11 @@ describe Shortener::ShortenedUrlsController, type: :controller do
|
|
97
108
|
before do
|
98
109
|
Shortener.default_redirect = 'http://www.default_redirect.com'
|
99
110
|
# call again for the get is done with the setting
|
100
|
-
|
111
|
+
if Rails::VERSION::MAJOR < 5
|
112
|
+
get :show, id: key
|
113
|
+
else
|
114
|
+
get :show, params: { id: key }
|
115
|
+
end
|
101
116
|
end
|
102
117
|
|
103
118
|
context 'non existant key' do
|
@@ -1,9 +1,9 @@
|
|
1
|
-
class CreateShortenedUrlsTable < ActiveRecord::Migration
|
1
|
+
class CreateShortenedUrlsTable < ActiveRecord::Migration[4.2]
|
2
2
|
def change
|
3
3
|
create_table :shortened_urls do |t|
|
4
4
|
# we can link this to a user for interesting things
|
5
5
|
t.integer :owner_id
|
6
|
-
t.string :owner_type, limit:
|
6
|
+
t.string :owner_type, limit: 20
|
7
7
|
|
8
8
|
# the real url that we will redirect to
|
9
9
|
t.text :url, null: false
|
@@ -122,15 +122,14 @@ describe Shortener::ShortenedUrl, type: :model do
|
|
122
122
|
end
|
123
123
|
|
124
124
|
context "duplicate unique key" do
|
125
|
-
|
126
|
-
expect_any_instance_of(Shortener::ShortenedUrl).to receive(:generate_unique_key).
|
127
|
-
and_return(existing_shortened_url.unique_key, 'ABCDEF')
|
128
|
-
Shortener::ShortenedUrl.where(unique_key: 'ABCDEF').delete_all
|
129
|
-
end
|
125
|
+
let(:duplicate_key) { 'ABCDEF' }
|
130
126
|
it 'should try until it finds a non-dup key' do
|
131
|
-
|
127
|
+
Shortener::ShortenedUrl.where(unique_key: duplicate_key).delete_all
|
128
|
+
Shortener::ShortenedUrl.create!(url: Faker::Internet.url, custom_key: duplicate_key)
|
129
|
+
short_url = Shortener::ShortenedUrl.create!(url: Faker::Internet.url, unique_key: duplicate_key)
|
132
130
|
expect(short_url).not_to be_nil
|
133
|
-
expect(short_url.unique_key).
|
131
|
+
expect(short_url.unique_key).not_to be_nil
|
132
|
+
expect(short_url.unique_key).not_to eq duplicate_key
|
134
133
|
end
|
135
134
|
end
|
136
135
|
end
|
@@ -180,8 +179,7 @@ describe Shortener::ShortenedUrl, type: :model do
|
|
180
179
|
it 'increments the use_count on the shortenedLink' do
|
181
180
|
original_count = short_url.use_count
|
182
181
|
short_url.increment_usage_count
|
183
|
-
|
184
|
-
expect(short_url.use_count).to eq (original_count + 1)
|
182
|
+
expect(short_url.reload.use_count).to eq (original_count + 1)
|
185
183
|
end
|
186
184
|
end
|
187
185
|
|
data/spec/spec_helper.rb
CHANGED
@@ -18,4 +18,8 @@ Shoulda::Matchers.configure do |config|
|
|
18
18
|
end
|
19
19
|
|
20
20
|
# Run any available migration
|
21
|
-
ActiveRecord::Migrator.
|
21
|
+
if ActiveRecord::Migrator.respond_to?(:migrate)
|
22
|
+
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
23
|
+
else
|
24
|
+
ActiveRecord::MigrationContext.new(File.expand_path("../dummy/db/migrate/", __FILE__)).migrate
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shortener
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James P. McGrath
|
@@ -9,36 +9,36 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: voight_kampff
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 1.1.2
|
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:
|
27
|
+
version: 1.1.2
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: rails
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
35
|
-
type: :
|
34
|
+
version: '3'
|
35
|
+
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: '3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: sqlite3
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,28 +59,28 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 3.
|
62
|
+
version: 3.6.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.
|
69
|
+
version: 3.6.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: shoulda-matchers
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
76
|
+
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: faker
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,6 +109,20 @@ dependencies:
|
|
109
109
|
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: appraisal
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
112
126
|
description: Shortener is a Rails Engine Gem that makes it easy to create and interpret
|
113
127
|
shortened URLs on your own domain from within your Rails application. Once installed
|
114
128
|
Shortener will generate, store URLS and "unshorten" shortened URLs for your applications
|
@@ -122,6 +136,7 @@ extra_rdoc_files: []
|
|
122
136
|
files:
|
123
137
|
- ".gitignore"
|
124
138
|
- ".travis.yml"
|
139
|
+
- Appraisals
|
125
140
|
- Gemfile
|
126
141
|
- MIT-LICENSE
|
127
142
|
- README.rdoc
|
@@ -129,6 +144,10 @@ files:
|
|
129
144
|
- app/controllers/shortener/shortened_urls_controller.rb
|
130
145
|
- app/helpers/shortener/shortener_helper.rb
|
131
146
|
- app/models/shortener/shortened_url.rb
|
147
|
+
- gemfiles/rails_4.gemfile
|
148
|
+
- gemfiles/rails_5.0.gemfile
|
149
|
+
- gemfiles/rails_5.1.gemfile
|
150
|
+
- gemfiles/rails_5.2.gemfile
|
132
151
|
- lib/generators/shortener/shortener_generator.rb
|
133
152
|
- lib/generators/shortener/templates/migration.rb
|
134
153
|
- lib/shortener.rb
|
@@ -189,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
208
|
requirements:
|
190
209
|
- - ">"
|
191
210
|
- !ruby/object:Gem::Version
|
192
|
-
version: 1.
|
211
|
+
version: 2.1.0
|
193
212
|
requirements: []
|
194
213
|
rubyforge_project: shortener
|
195
214
|
rubygems_version: 2.5.1
|