acts_as_digested_on 0.0.3 → 0.0.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9fe716747e29040d5d295efb36190265a35ffffe
4
+ data.tar.gz: f58ea0447b586740db607e35c3985a1406efbda9
5
+ SHA512:
6
+ metadata.gz: 17765a65a22b98c6bcd2ed75135a09d476809a4f7aeaa5b0ba3bd36d0ed003f27909396627233d427508a6f09972b480b36dbe47096cd6965e7ca966c71ab1fc
7
+ data.tar.gz: 04e334c76ceb1ad2124cd52573c737d533f02e15971fd4936f8bfa4290984e957ba96ad6d7ed2d66fdcb10c5718097e3fdb0aa8b1eb3aabd15c7743a5fac2fb4
data/.gitignore CHANGED
@@ -1,4 +1,23 @@
1
1
  *.gem
2
+ *.rbc
2
3
  .bundle
4
+ .config
5
+ .yardoc
3
6
  Gemfile.lock
4
- pkg/*
7
+ gemfiles/*.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ *.bundle
20
+ *.so
21
+ *.o
22
+ *.a
23
+ mkmf.log
data/.rspec CHANGED
@@ -1 +1,2 @@
1
+ --format documentation
1
2
  --color
data/.travis.yml CHANGED
@@ -1,7 +1,24 @@
1
1
  language: ruby
2
+ script: "bundle exec rake spec"
2
3
  rvm:
3
- - 1.8.7
4
- - 1.9.2
5
4
  - 1.9.3
6
- - ree
7
- script: bundle exec rspec spec
5
+ - 2.0.0
6
+ - 2.1
7
+ - ruby-head
8
+ gemfile:
9
+ - gemfiles/active_record_30.gemfile
10
+ - gemfiles/active_record_31.gemfile
11
+ - gemfiles/active_record_32.gemfile
12
+ - gemfiles/active_record_40.gemfile
13
+ - gemfiles/active_record_41.gemfile
14
+ matrix:
15
+ exclude:
16
+ - rvm: ruby-head
17
+ gemfile: gemfiles/active_record_30.gemfile
18
+ - rvm: ruby-head
19
+ gemfile: gemfiles/active_record_31.gemfile
20
+ - rvm: ruby-head
21
+ gemfile: gemfiles/active_record_32.gemfile
22
+ allow_failures:
23
+ - rvm: ruby-head
24
+ fast_finish: true
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in acts_as_digested_on.gemspec
4
4
  gemspec
@@ -1,4 +1,6 @@
1
- Copyright (c) 2009-2012 milk1000cc
1
+ Copyright (c) 2009-2014 milk1000cc
2
+
3
+ MIT License
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining
4
6
  a copy of this software and associated documentation files (the
data/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # ActsAsDigestedOn [![Build Status](https://travis-ci.org/milk1000cc/acts_as_digested_on.svg)](https://travis-ci.org/milk1000cc/acts_as_digested_on)
2
+
3
+ acts_as_digested_on is a gem for Rails 3 and Rails 4.
4
+
5
+ This sets the digested value before validation and validates uniqueness of the digested value.
6
+
7
+ If you use this gem for Rails 2, see rails-2 branch.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'acts_as_digested_on'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install acts_as_digested_on
22
+
23
+ ## Usage
24
+
25
+ ```ruby
26
+ # db/migrate/20090706000000_create_articles.rb
27
+ class CreateArticles < ActiveRecord::Migration
28
+ def self.up
29
+ create_table :articles do |t|
30
+ t.text :url # any type is ok
31
+ t.string :digest # this is sha-1 hex digest field of url value
32
+ ...
33
+ end
34
+
35
+ add_index :articles, :digest, :unique => true # you can add index on digest field
36
+ end
37
+
38
+ def self.down
39
+ drop_table :articles
40
+ end
41
+ end
42
+
43
+ # app/models/article.rb
44
+ class Article < ActiveRecord::Base
45
+ acts_as_digested_on :url # please add this
46
+ ...
47
+ end
48
+
49
+ # this means
50
+ class Article < ActiveRecord::Base
51
+ validates_uniqueness_of :digest
52
+ before_validation :set_digest
53
+
54
+ def generate_digest
55
+ Digest::SHA1.hexdigest "--#{ url.to_s }--"
56
+ end
57
+
58
+ private
59
+ def set_digest
60
+ self.digest = generate_digest
61
+ end
62
+ ...
63
+ end
64
+ ```
65
+
66
+ ## Examples
67
+
68
+ ```ruby
69
+ acts_as_digested_on :url, :unique => false
70
+
71
+ acts_as_digested_on :url, :digest_column => :url_digest
72
+
73
+ acts_as_digested_on [:url, :salt]
74
+
75
+ acts_as_digested_on :url, :scope => :site_id
76
+
77
+ Article.new(:url => 'http://example.com').generate_digest
78
+ ```
79
+
80
+ ## Contributing
81
+
82
+ 1. Fork it ( https://github.com/milk1000cc/acts_as_digested_on/fork )
83
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
84
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
85
+ 4. Push to the branch (`git push origin my-new-feature`)
86
+ 5. Create a new Pull Request
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
@@ -1,27 +1,27 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "acts_as_digested_on/version"
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'acts_as_digested_on/version'
4
5
 
5
- Gem::Specification.new do |s|
6
- s.name = "acts_as_digested_on"
7
- s.version = ActsAsDigestedOn::VERSION
8
- s.authors = ["milk1000cc"]
9
- s.email = ["info@milk1000.cc"]
10
- s.homepage = "https://github.com/milk1000cc/acts_as_digested_on"
11
- s.summary = %q{Automatically set sha-1 hex digest}
12
- s.description = %q{This gem sets the digested value before validation and validates uniqueness of the digested value.}
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "acts_as_digested_on"
8
+ spec.version = ActsAsDigestedOn::VERSION
9
+ spec.authors = ["milk1000cc"]
10
+ spec.email = ["info@milk1000.cc"]
11
+ spec.summary = %q{Automatically set sha-1 hex digest}
12
+ spec.description = %q{This gem sets the digested value before validation and validates uniqueness of the digested value.}
13
+ spec.homepage = "https://github.com/milk1000cc/acts_as_digested_on"
14
+ spec.license = "MIT"
13
15
 
14
- s.rubyforge_project = "acts_as_digested_on"
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
15
20
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
21
+ spec.add_dependency 'activerecord', '>= 3.0.0'
20
22
 
21
- # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
23
- # s.add_runtime_dependency "rest-client"
24
- s.add_dependency "rails", ">= 3.0.0"
25
- s.add_development_dependency "rspec"
26
- s.add_development_dependency "sqlite3"
23
+ spec.add_development_dependency "bundler", "~> 1.6"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "sqlite3"
27
27
  end
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 3.0.0'
4
+
5
+ gemspec :path => '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 3.1.0'
4
+
5
+ gemspec :path => '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 3.2.0'
4
+
5
+ gemspec :path => '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 4.0.0'
4
+
5
+ gemspec :path => '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 4.1.0'
4
+
5
+ gemspec :path => '../'
@@ -25,14 +25,22 @@ module ActsAsDigestedOn
25
25
 
26
26
  module InstanceMethods
27
27
  def generate_digest
28
- original_columns = self.class.acts_as_digested_on_vars[:original_columns]
29
- original_string = "--#{ original_columns.map { |v| self[v].to_s }.join('--') }--"
30
- digest = Digest::SHA1.hexdigest(original_string)
28
+ digest = Digest::SHA1.hexdigest(original_string_for_digest)
31
29
  digest.encode! 'utf-8' if RUBY_VERSION.to_f >= 1.9
32
30
  digest
33
31
  end
34
32
 
35
33
  private
34
+ def original_string_for_digest
35
+ separator = '--'
36
+ attr_names = self.class.acts_as_digested_on_vars[:attr_names]
37
+
38
+ str = separator.dup
39
+ str << attr_names.map { |v| send(v).to_s }.join(separator)
40
+ str << separator
41
+ str
42
+ end
43
+
36
44
  def set_digest
37
45
  digest_column = self.class.acts_as_digested_on_vars[:digest_column]
38
46
  self[digest_column] = generate_digest
@@ -40,16 +48,16 @@ module ActsAsDigestedOn
40
48
  end
41
49
 
42
50
  module ClassMethods
43
- def acts_as_digested_on(original_columns, options = {})
51
+ def acts_as_digested_on(attr_names, options = {})
44
52
  options = options.symbolize_keys
45
53
 
46
- original_columns = Array(original_columns).flatten
54
+ attr_names = Array(attr_names).flatten
47
55
  digest_column = options.delete(:digest_column) || 'digest'
48
56
  unique = options.key?(:unique) ? options.delete(:unique) : true
49
57
 
50
58
  class_attribute :acts_as_digested_on_vars
51
59
  self.acts_as_digested_on_vars = {
52
- :original_columns => original_columns,
60
+ :attr_names => attr_names,
53
61
  :digest_column => digest_column,
54
62
  :unique => unique,
55
63
  :validates_uniqueness_of_options => options
@@ -1,3 +1,3 @@
1
1
  module ActsAsDigestedOn
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require 'spec_helper'
2
2
 
3
3
  class Article < ActiveRecord::Base
4
4
  define_table do |t|
@@ -9,9 +9,13 @@ class Article < ActiveRecord::Base
9
9
  t.string :my_digest
10
10
  t.text :content
11
11
  end
12
+
13
+ def stripped_title
14
+ title.strip
15
+ end
12
16
  end
13
17
 
14
- describe "ActsAsDigestedOn" do
18
+ describe ActsAsDigestedOn do
15
19
  before do
16
20
  Article.reset_callbacks :validate
17
21
  Article.destroy_all
@@ -21,12 +25,29 @@ describe "ActsAsDigestedOn" do
21
25
  @url = 'http://example.com'
22
26
  end
23
27
 
28
+ it 'has a version number' do
29
+ expect(ActsAsDigestedOn::VERSION).not_to be nil
30
+ end
31
+
32
+ it 'can use a method name instead of a column name' do
33
+ Article.acts_as_digested_on :stripped_title
34
+
35
+ article = Article.create!(title: ' hello ')
36
+
37
+ expect(article.digest).to eq Digest::SHA1.hexdigest('--hello--')
38
+
39
+ expect {
40
+ Article.create! title: 'hello'
41
+ }.to raise_error(ActiveRecord::RecordInvalid)
42
+ end
43
+
24
44
  describe '#generate_digest' do
25
45
  it 'should generate sha-1 digest of target field with some string' do
26
46
  Article.acts_as_digested_on :url
27
47
 
28
- article = Article.new(:url => @url)
29
- article.generate_digest.should == Digest::SHA1.hexdigest("--#{ @url }--")
48
+ article = Article.new(url: @url)
49
+ expect(article.generate_digest).to eq(
50
+ Digest::SHA1.hexdigest("--#{ @url }--"))
30
51
  end
31
52
 
32
53
  describe 'when more than one target field is given' do
@@ -34,8 +55,9 @@ describe "ActsAsDigestedOn" do
34
55
  Article.acts_as_digested_on [:title, :url]
35
56
 
36
57
  title = 'an article'
37
- article = Article.new(:title => title, :url => @url)
38
- article.generate_digest.should == Digest::SHA1.hexdigest("--#{ title }--#{ @url }--")
58
+ article = Article.new(title: title, url: @url)
59
+ expect(article.generate_digest).to eq(
60
+ Digest::SHA1.hexdigest("--#{ title }--#{ @url }--"))
39
61
  end
40
62
  end
41
63
  end
@@ -44,21 +66,22 @@ describe "ActsAsDigestedOn" do
44
66
  it 'should set "digest" field' do
45
67
  Article.acts_as_digested_on :url
46
68
 
47
- article = Article.new(:url => @url)
48
- article.digest.should be_nil
69
+ article = Article.new(url: @url)
70
+ expect(article.digest).to be_nil
49
71
  article.valid?
50
- article.digest.should == article.generate_digest
72
+ expect(article.digest).to eq article.generate_digest
51
73
  end
52
74
 
53
75
  it 'should set the digest value to :digest_column field when :digest_column option is set' do
54
- Article.acts_as_digested_on :url, :digest_column => :my_digest
76
+ Article.acts_as_digested_on :url, digest_column: :my_digest
77
+
78
+ article = Article.new(url: @url)
79
+ expect(article.digest).to be_nil
80
+ expect(article.my_digest).to be_nil
55
81
 
56
- article = Article.new(:url => @url)
57
- article.digest.should be_nil
58
- article.my_digest.should be_nil
59
82
  article.valid?
60
- article.digest.should be_nil
61
- article.my_digest.should == article.generate_digest
83
+ expect(article.digest).to be_nil
84
+ expect(article.my_digest).to eq article.generate_digest
62
85
  end
63
86
  end
64
87
 
@@ -66,40 +89,54 @@ describe "ActsAsDigestedOn" do
66
89
  it 'should validate uniqueness of digest field by default' do
67
90
  Article.acts_as_digested_on :url
68
91
 
69
- Article.create! :url => @url
70
- proc { Article.create!(:url => @url) }.should raise_error(ActiveRecord::RecordInvalid)
71
- proc { Article.create!(:url => 'http://example2.com') }.should_not raise_error
92
+ Article.create! url: @url
93
+ expect {
94
+ Article.create! url: @url
95
+ }.to raise_error(ActiveRecord::RecordInvalid)
96
+ expect {
97
+ Article.create! url: 'http://example2.com'
98
+ }.not_to raise_error
72
99
  end
73
100
 
74
101
  it 'should carry over the options to the validates_uniqueness_of options' do
75
- Article.acts_as_digested_on :url, :scope => :user_id
76
-
77
- Article.create! :url => @url, :user_id => 1
78
- proc { Article.create!(:url => @url, :user_id => 1) }.should raise_error(ActiveRecord::RecordInvalid)
79
- proc { Article.create!(:url => @url, :user_id => 2) }.should_not raise_error
80
- proc { Article.create!(:url => 'http://example2.com', :user_id => 1) }.should_not raise_error
102
+ Article.acts_as_digested_on :url, scope: :user_id
103
+
104
+ Article.create! url: @url, user_id: 1
105
+ expect {
106
+ Article.create! url: @url, user_id: 1
107
+ }.to raise_error(ActiveRecord::RecordInvalid)
108
+ expect {
109
+ Article.create! url: @url, user_id: 2
110
+ }.not_to raise_error
111
+ expect {
112
+ Article.create! url: 'http://example2.com', user_id: 1
113
+ }.not_to raise_error
81
114
  end
82
115
 
83
116
  it 'should validate uniqueness of digest field when :unique option is true' do
84
- Article.acts_as_digested_on :url, :unique => true
85
-
86
- Article.create! :url => @url
87
- proc { Article.create!(:url => @url) }.should raise_error(ActiveRecord::RecordInvalid)
88
- proc { Article.create!(:url => 'http://example2.com') }.should_not raise_error
117
+ Article.acts_as_digested_on :url, unique: true
118
+
119
+ Article.create! url: @url
120
+ expect {
121
+ Article.create! url: @url
122
+ }.to raise_error(ActiveRecord::RecordInvalid)
123
+ expect {
124
+ Article.create! url: 'http://example2.com'
125
+ }.not_to raise_error
89
126
  end
90
127
 
91
128
  it 'should not validate uniqueness of digest field when :unique option is false' do
92
- Article.acts_as_digested_on :url, :unique => false
129
+ Article.acts_as_digested_on :url, unique: false
93
130
 
94
- Article.create! :url => @url
95
- proc { Article.create!(:url => @url) }.should_not raise_error
131
+ Article.create! url: @url
132
+ expect { Article.create! url: @url }.not_to raise_error
96
133
  end
97
134
 
98
135
  it 'should support string key options' do
99
136
  Article.acts_as_digested_on :url, 'unique' => false
100
137
 
101
- Article.create! :url => @url
102
- proc { Article.create!(:url => @url) }.should_not raise_error
138
+ Article.create! url: @url
139
+ expect { Article.create! url: @url }.not_to raise_error
103
140
  end
104
141
  end
105
142
  end
data/spec/spec_helper.rb CHANGED
@@ -1,18 +1,11 @@
1
- require 'logger'
2
- require 'rspec'
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
2
  require 'active_record'
4
-
5
- $LOAD_PATH.unshift(File.dirname(__FILE__))
6
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
3
  require 'acts_as_digested_on'
8
4
 
9
- RSpec.configure do |config|
10
- config.treat_symbols_as_metadata_keys_with_true_values = true
11
- config.filter_run :focus => true
12
- config.run_all_when_everything_filtered = true
13
- end
5
+ I18n.enforce_available_locales = true
14
6
 
15
- ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
7
+ ActiveRecord::Base.establish_connection(
8
+ :adapter => 'sqlite3', :database => ':memory:')
16
9
 
17
10
  class ActiveRecord::Base
18
11
  def self.define_table(table_name = self.name.tableize, &migration)
metadata CHANGED
@@ -1,49 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_digested_on
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - milk1000cc
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-03-07 00:00:00.000000000Z
11
+ date: 2014-06-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: &70162942322700 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.0.0
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70162942322700
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
25
55
  - !ruby/object:Gem::Dependency
26
56
  name: rspec
27
- requirement: &70162942322280 !ruby/object:Gem::Requirement
28
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
29
58
  requirements:
30
- - - ! '>='
59
+ - - ">="
31
60
  - !ruby/object:Gem::Version
32
61
  version: '0'
33
62
  type: :development
34
63
  prerelease: false
35
- version_requirements: *70162942322280
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
36
69
  - !ruby/object:Gem::Dependency
37
70
  name: sqlite3
38
- requirement: &70162942349460 !ruby/object:Gem::Requirement
39
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
40
72
  requirements:
41
- - - ! '>='
73
+ - - ">="
42
74
  - !ruby/object:Gem::Version
43
75
  version: '0'
44
76
  type: :development
45
77
  prerelease: false
46
- version_requirements: *70162942349460
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
47
83
  description: This gem sets the digested value before validation and validates uniqueness
48
84
  of the digested value.
49
85
  email:
@@ -52,41 +88,46 @@ executables: []
52
88
  extensions: []
53
89
  extra_rdoc_files: []
54
90
  files:
55
- - .gitignore
56
- - .rspec
57
- - .travis.yml
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - ".travis.yml"
58
94
  - Gemfile
59
- - LICENSE
60
- - README.rdoc
95
+ - LICENSE.txt
96
+ - README.md
61
97
  - Rakefile
62
98
  - acts_as_digested_on.gemspec
99
+ - gemfiles/active_record_30.gemfile
100
+ - gemfiles/active_record_31.gemfile
101
+ - gemfiles/active_record_32.gemfile
102
+ - gemfiles/active_record_40.gemfile
103
+ - gemfiles/active_record_41.gemfile
63
104
  - lib/acts_as_digested_on.rb
64
105
  - lib/acts_as_digested_on/version.rb
65
106
  - spec/acts_as_digested_on_spec.rb
66
107
  - spec/spec_helper.rb
67
108
  homepage: https://github.com/milk1000cc/acts_as_digested_on
68
- licenses: []
109
+ licenses:
110
+ - MIT
111
+ metadata: {}
69
112
  post_install_message:
70
113
  rdoc_options: []
71
114
  require_paths:
72
115
  - lib
73
116
  required_ruby_version: !ruby/object:Gem::Requirement
74
- none: false
75
117
  requirements:
76
- - - ! '>='
118
+ - - ">="
77
119
  - !ruby/object:Gem::Version
78
120
  version: '0'
79
121
  required_rubygems_version: !ruby/object:Gem::Requirement
80
- none: false
81
122
  requirements:
82
- - - ! '>='
123
+ - - ">="
83
124
  - !ruby/object:Gem::Version
84
125
  version: '0'
85
126
  requirements: []
86
- rubyforge_project: acts_as_digested_on
87
- rubygems_version: 1.8.10
127
+ rubyforge_project:
128
+ rubygems_version: 2.2.2
88
129
  signing_key:
89
- specification_version: 3
130
+ specification_version: 4
90
131
  summary: Automatically set sha-1 hex digest
91
132
  test_files:
92
133
  - spec/acts_as_digested_on_spec.rb
data/README.rdoc DELETED
@@ -1,70 +0,0 @@
1
- = ActsAsDigestedOn {<img src="https://secure.travis-ci.org/milk1000cc/acts_as_digested_on.png?branch=master" alt="Build Status" />}[http://travis-ci.org/milk1000cc/acts_as_digested_on]
2
-
3
- acts_as_digested_on is a gem for Rails 3.
4
-
5
- This sets the digested value before validation and validates uniqueness of the digested value.
6
-
7
- If you use this gem for Rails 2, see rails-2 branch.
8
-
9
- == Install
10
-
11
- sudo gem install acts_as_digested_on
12
-
13
- == Usage
14
-
15
- # db/migrate/20090706000000_create_articles.rb
16
- class CreateArticles < ActiveRecord::Migration
17
- def self.up
18
- create_table :articles do |t|
19
- t.text :url # any type is ok
20
- t.string :digest # this is sha-1 hex digest field of url value
21
- ...
22
- end
23
-
24
- add_index :articles, :digest, :unique => true # you can add index on digest field
25
- end
26
-
27
- def self.down
28
- drop_table :articles
29
- end
30
- end
31
-
32
- # app/models/article.rb
33
- class Article < ActiveRecord::Base
34
- acts_as_digested_on :url # please add this
35
- ...
36
- end
37
-
38
- # this means
39
- class Article < ActiveRecord::Base
40
- validates_uniqueness_of :digest
41
- before_validation :set_digest
42
-
43
- def generate_digest
44
- Digest::SHA1.hexdigest "--#{ url.to_s }--"
45
- end
46
-
47
- private
48
- def set_digest
49
- self.digest = generate_digest
50
- end
51
- ...
52
- end
53
-
54
- == Examples
55
-
56
- acts_as_digested_on :url, :unique => false
57
-
58
- acts_as_digested_on :url, :digest_column => :url_digest
59
-
60
- acts_as_digested_on [:url, :salt]
61
-
62
- acts_as_digested_on :url, :scope => :site_id
63
-
64
- Article.new(:url => 'http://example.com').generate_digest
65
-
66
- == Copyright
67
-
68
- Copyright (c) 2009-2012 milk1000cc, released under the MIT license
69
-
70
- milk1000cc <mailto:info@milk1000.cc>