mongomapper_token 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 mongomapper_token.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,3 @@
1
+ module MongomapperToken
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,57 @@
1
+ module MongoMapper
2
+ module Token
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def token(*args)
7
+ options = args.extract_options!
8
+ options[:length] ||= 4
9
+ options[:contains] ||= :alphanumeric
10
+ options[:index] = true unless options.has_key?(:index)
11
+
12
+ self.key :token, :type => String
13
+ self.ensure_index [[:token, 1]], :unique => true if options[:index]
14
+
15
+ set_callback(:create, :before) do |document|
16
+ document.create_token(options[:length], options[:contains])
17
+ end
18
+
19
+ set_callback(:save, :before) do |document|
20
+ document.create_token_if_nil(options[:length], options[:contains])
21
+ end
22
+ end
23
+
24
+ def find_by_token(token)
25
+ self.first(:conditions => {:token => token})
26
+ end
27
+ end
28
+
29
+ module InstanceMethods
30
+ def to_param
31
+ self.token
32
+ end
33
+
34
+ protected
35
+ def create_token(length, characters)
36
+ self.token = self.generate_token(length, characters) while self.token.nil? || self.class.exists?(:conditions => {:token => self.token})
37
+ end
38
+
39
+ def create_token_if_nil(length, characters)
40
+ self.create_token(length, characters) if self.token.nil?
41
+ end
42
+
43
+ def generate_token(length, characters = :alphanumeric)
44
+ case characters
45
+ when :alphanumeric
46
+ (1..length).collect { (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }.join
47
+ when :numeric
48
+ rand(10**length).to_s
49
+ when :fixed_numeric
50
+ rand(10**length).to_s.rjust(length,rand(10).to_s)
51
+ when :alpha
52
+ Array.new(length).map{['A'..'Z','a'..'z'].map{|r|r.to_a}.flatten[rand(52)]}.join
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "mongomapper_token/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "mongomapper_token"
7
+ s.version = MongomapperToken::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Chris Earls"]
10
+ s.email = ["cgearls@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{A little random, unique token generator for MongoMapper documents.}
13
+ s.description = %q{MongoMapper token is a gem for creating random, unique tokens for MongoMapper documents.}
14
+
15
+ s.rubyforge_project = "mongomapper_token"
16
+ s.add_dependency 'activesupport', '>= 3.0.0'
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mongomapper_token
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Earls
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-06-07 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &2164294420 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2164294420
25
+ description: MongoMapper token is a gem for creating random, unique tokens for MongoMapper
26
+ documents.
27
+ email:
28
+ - cgearls@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - Gemfile
35
+ - Rakefile
36
+ - lib/mongomapper_token.rb
37
+ - lib/mongomapper_token/version.rb
38
+ - mongomapper_token.gemspec
39
+ homepage: ''
40
+ licenses: []
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubyforge_project: mongomapper_token
59
+ rubygems_version: 1.8.5
60
+ signing_key:
61
+ specification_version: 3
62
+ summary: A little random, unique token generator for MongoMapper documents.
63
+ test_files: []