url_attributes 1.1.1 → 1.2.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
  SHA1:
3
- metadata.gz: 72fddb96602914d4b5919991d53951949012f68b
4
- data.tar.gz: 2a8d960c781033dd6bb95aa28b49c5fb09bcb1c5
3
+ metadata.gz: f2b9ac4bb2330e36f9a6ce629b265c2926793569
4
+ data.tar.gz: e78f758a61bc52cc6f65810e7a42e9e3e2efe0bf
5
5
  SHA512:
6
- metadata.gz: 16c66826858d8116aefb25d0037fe5d02fe0d33d8fb9766bd08b8e9b10a5f1588f3ea4139ffbf481fab5dcaf6c6978dd2c8def635508dc3b80fed65434cff046
7
- data.tar.gz: f7aecd99cc47f80508c12f37d07be214db148d208a7cd51cc08145786ff1483a8a61a7cbbd43ad15839b081a5e951121d69ceeb89c45f75b311967528c6b5e7d
6
+ metadata.gz: cb761cd88a6478fa89114448792aa47c928eb61806d57965e75eb939070c85eaf65e2740e46efbc1d6690a670156c044dd60df0db9d66d640e445154b9577b7f
7
+ data.tar.gz: b3ba4110e2e2a08f22d375c8e55895c2e09dfb6c4626c8f8ddaaaf0412bd2bcf4addeb82f91d1c9a51c413a88e6c2c15d03b6f079e32de68187b742915536fef
data/README.md CHANGED
@@ -24,8 +24,17 @@ then call the class method `url_attribute` in your model like this:
24
24
  This does two things:
25
25
 
26
26
  1. It adds a validation to `link` that
27
- 2. Before save, it strips trailing whitespace from the link and adds `"http://"` to the beginning
28
- if it (or `"https://"`) is not already there.
27
+ 2. Before save, it strips trailing whitespace from the link and adds
28
+ `"http://"` to the beginning if it (or `"https://"`) is not already there.
29
+
30
+ If you want the logic to run somewhere other than `before_save`, pass a
31
+ `:before` option with the name of another `before_` callback:
32
+
33
+ class MyAwesomeModel < ActiveRecord::Base
34
+
35
+ url_attribute :link, before: :validation
36
+
37
+ end
29
38
 
30
39
  ## Matcher
31
40
 
@@ -13,17 +13,20 @@
13
13
  module URLAttributes
14
14
  module ActiveRecord
15
15
 
16
- def url_attribute(attribute_name, opts={})
16
+ def url_attribute(attribute_name, before: :save)
17
17
  validates attribute_name, :url => true, :if => "#{attribute_name}.present?"
18
18
 
19
+ callback_method = :"before_#{before}"
20
+
19
21
  # Add "http://" to the URL if it's not already there.
20
- before_save do |record|
22
+ send(callback_method) do |record|
21
23
  url = record[attribute_name]
22
24
  if url.present? && !(url =~ /\A\s*https?:\/\//)
23
25
  url = "http://#{url.try(:strip)}"
24
26
  end
25
27
  record[attribute_name] = url
26
28
  end
29
+
27
30
  end
28
31
 
29
32
  end
@@ -1,4 +1,4 @@
1
- if Rails.env.test? && defined?(RSpec)
1
+ if defined?(RSpec)
2
2
  RSpec::Matchers.define :have_url_attribute do |attribute_name|
3
3
  # This matcher is an ugly piece of shit
4
4
  match do |model|
@@ -1,3 +1,3 @@
1
1
  module URLAttributes
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -1,3 +1,5 @@
1
1
  class Model < ActiveRecord::Base
2
2
  url_attribute :url
3
+
4
+ url_attribute :other_url, before: :validation
3
5
  end
@@ -0,0 +1,5 @@
1
+ class AddOtherUrlToModel < ActiveRecord::Migration
2
+ def change
3
+ add_column :models, :other_url, :string
4
+ end
5
+ end
@@ -11,12 +11,13 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20141124095718) do
14
+ ActiveRecord::Schema.define(version: 20150105143321) do
15
15
 
16
16
  create_table "models", force: true do |t|
17
17
  t.string "url"
18
18
  t.datetime "created_at"
19
19
  t.datetime "updated_at"
20
+ t.string "other_url"
20
21
  end
21
22
 
22
23
  end
@@ -65,4 +65,13 @@ describe "ActiveRecord::Base#url_attribute" do
65
65
  end
66
66
  end
67
67
  end
68
+
69
+ context "when passed a 'before' option" do
70
+ it "runs the callbacks on the given validation instead of before_save" do
71
+ model.other_url = " example.com/example "
72
+ model.run_callbacks :validation
73
+ expect(model.other_url).to eq "http://example.com/example"
74
+ end
75
+ end
76
+
68
77
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.email = ["georgejulianmillo@gmail.com"]
11
11
  s.summary = "Simple URL attributes for ActiveRecord"
12
12
  s.description = "Validate and sanitize URLs in ActiveRecord"
13
- s.homepage = 'http://github.com/georgemillo/url_attributes'
13
+ s.homepage = 'http://github.com/headstock/url_attributes'
14
14
  s.license = "MIT"
15
15
 
16
16
  s.files = `git ls-files -z`.split("\x0")
@@ -18,6 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
  s.require_paths = ["lib"]
20
20
 
21
+ s.required_ruby_version = ">= 2.0.0"
22
+
21
23
  s.add_dependency "rails", ">= 4.0.0"
22
24
 
23
25
  s.add_development_dependency "bundler", "~> 1.7"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: url_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Millo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-24 00:00:00.000000000 Z
11
+ date: 2015-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -114,7 +114,6 @@ files:
114
114
  - lib/url_attributes/url_validator.rb
115
115
  - lib/url_attributes/version.rb
116
116
  - spec/dummy/.gitignore
117
- - spec/dummy/Gemfile
118
117
  - spec/dummy/Gemfile.lock
119
118
  - spec/dummy/README.rdoc
120
119
  - spec/dummy/Rakefile
@@ -153,6 +152,7 @@ files:
153
152
  - spec/dummy/config/routes.rb
154
153
  - spec/dummy/config/secrets.yml
155
154
  - spec/dummy/db/migrate/20141124095718_create_models.rb
155
+ - spec/dummy/db/migrate/20150105143321_add_other_url_to_model.rb
156
156
  - spec/dummy/db/schema.rb
157
157
  - spec/dummy/db/seeds.rb
158
158
  - spec/dummy/lib/assets/.keep
@@ -169,7 +169,7 @@ files:
169
169
  - spec/spec_helper.rb
170
170
  - spec/url_attributes_spec.rb
171
171
  - url_attributes.gemspec
172
- homepage: http://github.com/georgemillo/url_attributes
172
+ homepage: http://github.com/headstock/url_attributes
173
173
  licenses:
174
174
  - MIT
175
175
  metadata: {}
@@ -181,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
181
  requirements:
182
182
  - - ">="
183
183
  - !ruby/object:Gem::Version
184
- version: '0'
184
+ version: 2.0.0
185
185
  required_rubygems_version: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - ">="
@@ -189,13 +189,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  version: '0'
190
190
  requirements: []
191
191
  rubyforge_project:
192
- rubygems_version: 2.4.3
192
+ rubygems_version: 2.4.4
193
193
  signing_key:
194
194
  specification_version: 4
195
195
  summary: Simple URL attributes for ActiveRecord
196
196
  test_files:
197
197
  - spec/dummy/.gitignore
198
- - spec/dummy/Gemfile
199
198
  - spec/dummy/Gemfile.lock
200
199
  - spec/dummy/README.rdoc
201
200
  - spec/dummy/Rakefile
@@ -234,6 +233,7 @@ test_files:
234
233
  - spec/dummy/config/routes.rb
235
234
  - spec/dummy/config/secrets.yml
236
235
  - spec/dummy/db/migrate/20141124095718_create_models.rb
236
+ - spec/dummy/db/migrate/20150105143321_add_other_url_to_model.rb
237
237
  - spec/dummy/db/schema.rb
238
238
  - spec/dummy/db/seeds.rb
239
239
  - spec/dummy/lib/assets/.keep
@@ -249,3 +249,4 @@ test_files:
249
249
  - spec/rails_helper.rb
250
250
  - spec/spec_helper.rb
251
251
  - spec/url_attributes_spec.rb
252
+ has_rdoc:
data/spec/dummy/Gemfile DELETED
@@ -1,40 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
-
4
- # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5
- gem 'rails', '4.1.8'
6
- # Use sqlite3 as the database for Active Record
7
- gem 'sqlite3'
8
- # Use SCSS for stylesheets
9
- gem 'sass-rails', '~> 4.0.3'
10
- # Use Uglifier as compressor for JavaScript assets
11
- gem 'uglifier', '>= 1.3.0'
12
- # Use CoffeeScript for .js.coffee assets and views
13
- gem 'coffee-rails', '~> 4.0.0'
14
- # See https://github.com/sstephenson/execjs#readme for more supported runtimes
15
- # gem 'therubyracer', platforms: :ruby
16
-
17
- # Use jquery as the JavaScript library
18
- gem 'jquery-rails'
19
- # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
20
- gem 'turbolinks'
21
- # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
22
- gem 'jbuilder', '~> 2.0'
23
- # bundle exec rake doc:rails generates the API under doc/api.
24
- gem 'sdoc', '~> 0.4.0', group: :doc
25
-
26
- # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
27
- gem 'spring', group: :development
28
-
29
- # Use ActiveModel has_secure_password
30
- # gem 'bcrypt', '~> 3.1.7'
31
-
32
- # Use unicorn as the app server
33
- # gem 'unicorn'
34
-
35
- # Use Capistrano for deployment
36
- # gem 'capistrano-rails', group: :development
37
-
38
- # Use debugger
39
- # gem 'debugger', group: [:development, :test]
40
-