uniquefy 0.0.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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in uniquefy.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,3 @@
1
+ module Uniquefy
2
+ VERSION = "0.0.1"
3
+ end
data/lib/uniquefy.rb ADDED
@@ -0,0 +1,38 @@
1
+ require "uniquefy/version"
2
+
3
+ module Uniquefy
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ def ensure_unique(name)
9
+ begin
10
+ self[name] = yield
11
+ end while self.class.exists?(name => self[name])
12
+ end
13
+
14
+ module ClassMethods
15
+
16
+ def uniquefy(*args, &block)
17
+ options = { :length => 8, :chars => ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a }
18
+ options.merge!(args.pop) if args.last.kind_of? Hash
19
+ args.each do |name|
20
+ before_create do |record|
21
+ if block
22
+ record.ensure_unique(name, &block)
23
+ else
24
+ record.ensure_unique(name) do
25
+ Array.new(options[:length]) { options[:chars].to_a[rand(options[:chars].to_a.size)] }.join
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+ class ActiveRecord::Base
36
+ include Uniquefy
37
+ end
38
+
data/uniquefy.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "uniquefy/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "uniquefy"
7
+ s.version = Uniquefy::VERSION
8
+ s.authors = ["Gajendra"]
9
+ s.email = ["gaju.mca@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Simple gem for uniquefy}
12
+ s.description = %q{Simple gem for uniquefy description}
13
+
14
+ s.rubyforge_project = "uniquefy"
15
+
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"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ # s.add_runtime_dependency "rest-client"
24
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uniquefy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Gajendra
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-07 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: Simple gem for uniquefy description
15
+ email:
16
+ - gaju.mca@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - Rakefile
24
+ - lib/uniquefy.rb
25
+ - lib/uniquefy/version.rb
26
+ - uniquefy.gemspec
27
+ homepage: ''
28
+ licenses: []
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project: uniquefy
47
+ rubygems_version: 1.8.10
48
+ signing_key:
49
+ specification_version: 3
50
+ summary: Simple gem for uniquefy
51
+ test_files: []