acts_as_digested_on 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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>