public_uid 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 032aafb0e5f3992c4ea4197a2eb9e78585d60eee
4
- data.tar.gz: d39558dc338f02cd9355fc618660f4cfcd70c57a
3
+ metadata.gz: e60e9adac30a4438f4749528b067dc3574adf28e
4
+ data.tar.gz: fb17f29505924fad7949a2b173b6ff15b76910e4
5
5
  SHA512:
6
- metadata.gz: 42e863949ee643c5d3b88315b7d7cac6a1d93b870c00f79f47be4a78300d7a8b2ffd45046525bad14bd50433d3cb5ccc6fd743b98ca206b5c974f7c4210af380
7
- data.tar.gz: 72cb950c7a4b950fa1c6cb7ff070cdecbd5b34e855dceafc1b41a91094efad682db57b3fb63d87002fc75e8bdf612a60b1adca9bda2c0673f9603644de17d79f
6
+ metadata.gz: caca27924c4a11a42333a5e0da57c41441056988d35e58a2e4c49314619b920f95020a7e5c3c01336f7e8d29e5700224975cc4fec316db076b6fd594f0ec376a
7
+ data.tar.gz: 05e33a8dabd884f4b369591d249f1073969f173293f33be3a8997512bcdc68ef72699837704be8ed8978d0dd954c7d929486e64b0a5398aea1ea74f87e6e4e9b
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
7
+ - 2.1.1
8
+ - ruby-head
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in public_uid.gemspec
4
4
  gemspec
5
+
6
+ gem "activerecord", '~> 3.2'
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # PublicUid
2
2
 
3
+
4
+ [![Build Status](https://api.travis-ci.org/equivalent/lpgrid.png?branch=master)](http://travis-ci.org/equivalent/public_uid)
5
+ [![Code Climate](https://codeclimate.com/github/equivalent/public_uid.png)](https://codeclimate.com/github/equivalent/public_uid)
6
+
7
+
3
8
  Generates random string (or random number) to represent public unique
4
9
  record identifier.
5
10
 
@@ -0,0 +1,2 @@
1
+ require 'orm_adapter/adapters/active_record'
2
+ ActiveRecord::Base.send(:include, PublicUid::Model)
@@ -0,0 +1,24 @@
1
+ module PublicUid
2
+ module Model
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ def generate_uid
8
+ pub_uid = SetPublicUid.new(record: self, column: self.class.public_uid_column)
9
+ pub_uid.generate self.class.public_uid_generator
10
+ pub_uid.set
11
+ end
12
+
13
+ module ClassMethods
14
+ attr_reader :public_uid_column
15
+ attr_reader :public_uid_generator
16
+
17
+ def generate_public_uid(options={})
18
+ @public_uid_column = options[:column] || :public_uid
19
+ @public_uid_generator = options[:generator] || Generators::NumberRandom.new
20
+ before_create :generate_uid, unless: @public_uid_column
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module PublicUid
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/lib/public_uid.rb CHANGED
@@ -1,29 +1,8 @@
1
+ require 'orm_adapter'
1
2
  require "public_uid/version"
2
3
  require "public_uid/set_public_uid"
4
+ require "public_uid/model"
3
5
  require "public_uid/generators/number_random"
4
6
  require "public_uid/generators/range_string"
5
7
 
6
- module PublicUid
7
-
8
- def self.included(base)
9
- base.extend(ClassMethods)
10
- end
11
-
12
- def generate_uid
13
- pub_uid = SetPublicUid.new(record: self, column: self.class.public_uid_column)
14
- pub_uid.generate self.class.public_uid_generator
15
- pub_uid.set
16
- end
17
-
18
- module ClassMethods
19
- attr_reader :public_uid_column
20
- attr_reader :public_uid_generator
21
-
22
- def generate_public_uid(options={})
23
- @public_uid_column = options[:column] || :public_uid
24
- @public_uid_generator = options[:generator] || Generators::NumberRandom.new
25
- before_create :generate_uid, unless: @public_uid_column
26
- end
27
- end
28
-
29
- end
8
+ require 'orm/active_record'
data/public_uid.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["equivalent@eq8.eu"]
11
11
  spec.description = %q{Automatic generates public unique identifier for model}
12
12
  spec.summary = %q{Automatic generates public UID column}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/equivalent/public_uid"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "orm_adapter", "~> 0.5"
21
22
  spec.add_development_dependency "bundler", "~> 1.3"
22
23
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "activerecord", "~> 3.2"
24
24
  spec.add_development_dependency "minitest", "~> 5"
25
25
  spec.add_development_dependency "sqlite3"
26
26
  end
@@ -1,29 +1,25 @@
1
1
  require 'test_helper'
2
2
 
3
- class CustomPublicUidColumnModel < ActiveRecord::Base
4
- self.table_name = "users"
5
- include PublicUid
6
- generate_public_uid column: :custom_uid
7
- end
8
-
9
- describe 'CustomPublicUidColumnModel' do
10
- let(:user){CustomPublicUidColumnModel.new}
3
+ TestConf.orm_modules.each do |orm_module|
4
+ describe orm_module.description do
5
+ let(:user) { "#{orm_module}::CustomPublicUidColumnModel".constantize.new }
11
6
 
12
- describe '#custom_uid' do
13
- subject{ user.custom_uid }
7
+ describe '#custom_uid' do
8
+ subject{ user.custom_uid }
14
9
 
15
- context 'in new record' do
16
- it{ subject.must_be_nil }
17
- end
18
-
19
- context 'after save' do
20
- before do
21
- user.save
22
- user.reload
10
+ context 'in new record' do
11
+ it{ subject.must_be_nil }
23
12
  end
24
- it{ subject.wont_be_nil }
25
- it 'by default should generate 7 digit number string' do
26
- subject.to_i.to_s.length.must_equal(7)
13
+
14
+ context 'after save' do
15
+ before do
16
+ user.save
17
+ user.reload
18
+ end
19
+ it{ subject.wont_be_nil }
20
+ it 'by default should generate 7 digit number string' do
21
+ subject.to_i.to_s.length.must_equal(7)
22
+ end
27
23
  end
28
24
  end
29
25
  end
@@ -1,40 +1,33 @@
1
1
  require 'test_helper'
2
2
 
3
- class ModelWithCustomGererator < ActiveRecord::Base
4
- self.table_name = "users"
5
- include PublicUid
6
-
7
- gener_range = ('a'..'z').to_a+('A'..'Z').to_a
8
-
9
- generate_public_uid generator: PublicUid::Generators::RangeString.
10
- new(10, gener_range)
11
- end
12
-
13
- describe 'ModelWithCustomGererator' do
14
- let(:user){ModelWithCustomGererator.new}
15
-
16
- describe '#public_uid' do
17
- subject{ user.public_uid }
18
-
19
- context 'in new record' do
20
- it{ subject.must_be_nil }
21
- end
22
-
23
- context 'after save' do
24
- before do
25
- user.save
26
- user.reload
27
- end
28
-
29
- it 'should generate 10 chars' do
30
- subject.must_be_kind_of String
31
- subject.length.must_equal(10)
3
+ TestConf.orm_modules.each do |orm_module|
4
+ describe orm_module.description do
5
+ describe 'ModelWithCustomGererator' do
6
+ let(:user) { "#{orm_module}::ModelWithCustomGererator".constantize.new }
7
+
8
+ describe '#public_uid' do
9
+ subject{ user.public_uid }
10
+
11
+ context 'in new record' do
12
+ it{ subject.must_be_nil }
13
+ end
14
+
15
+ context 'after save' do
16
+ before do
17
+ user.save
18
+ user.reload
19
+ end
20
+
21
+ it 'should generate 10 chars' do
22
+ subject.must_be_kind_of String
23
+ subject.length.must_equal(10)
24
+ end
25
+
26
+ it 'string including up & down case' do
27
+ subject.must_match(/^[a-zA-Z]+$/)
28
+ end
29
+ end
32
30
  end
33
-
34
- it 'string including up & down case' do
35
- subject.must_match(/^[a-zA-Z]+$/)
36
- end
37
-
38
31
  end
39
32
  end
40
33
  end
@@ -1,31 +1,28 @@
1
1
  require 'test_helper'
2
2
 
3
- class ModelWithGeneratorDefaults < ActiveRecord::Base
4
- self.table_name = "users"
5
- include PublicUid
6
- generate_public_uid
7
- end
8
-
9
- describe 'ModelWithGeneratorDefaults' do
10
- let(:user){ModelWithGeneratorDefaults.new}
3
+ TestConf.orm_modules.each do |orm_module|
4
+ describe orm_module.description do
5
+ describe 'ModelWithGeneratorDefaults' do
6
+ let(:user) { "#{orm_module}::ModelWithGeneratorDefaults".constantize.new }
11
7
 
12
- describe '#public_uid' do
13
- subject{ user.public_uid }
8
+ describe '#public_uid' do
9
+ subject{ user.public_uid }
14
10
 
15
- context 'in new record' do
16
- it{ subject.must_be_nil }
17
- end
11
+ context 'in new record' do
12
+ it{ subject.must_be_nil }
13
+ end
18
14
 
19
- context 'after save' do
20
- before do
21
- user.save
22
- user.reload
23
- end
24
- it{ subject.wont_be_nil }
25
- it 'by default should generate 7 digit number string' do
26
- subject.to_i.to_s.length.must_equal(7)
15
+ context 'after save' do
16
+ before do
17
+ user.save
18
+ user.reload
19
+ end
20
+ it{ subject.wont_be_nil }
21
+ it 'by default should generate 7 digit number string' do
22
+ subject.to_i.to_s.length.must_equal(7)
23
+ end
24
+ end
27
25
  end
28
26
  end
29
27
  end
30
28
  end
31
-
@@ -0,0 +1,29 @@
1
+ ActiveRecord::Base::establish_connection(adapter: 'sqlite3', database: ':memory:')
2
+ ActiveRecord::Base.connection.execute(%{CREATE TABLE users (id INTEGER PRIMARY KEY, public_uid VARCHAR, custom_uid INTEGER);})
3
+
4
+ module ActRec
5
+ def self.description
6
+ 'ActiveRecord based'
7
+ end
8
+
9
+ class CustomPublicUidColumnModel < ActiveRecord::Base
10
+ self.table_name = "users"
11
+ generate_public_uid column: :custom_uid
12
+ end
13
+
14
+ class ModelWithCustomGererator < ActiveRecord::Base
15
+ self.table_name = "users"
16
+
17
+ gener_range = ('a'..'z').to_a+('A'..'Z').to_a
18
+
19
+ generate_public_uid generator: PublicUid::Generators::RangeString.
20
+ new(10, gener_range)
21
+ end
22
+
23
+ class ModelWithGeneratorDefaults < ActiveRecord::Base
24
+ self.table_name = "users"
25
+ generate_public_uid
26
+ end
27
+ end
28
+
29
+ TestConf.add_orm_module(ActRec)
data/test/test_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
+ require 'pathname'
1
2
  require 'bundler/setup'
2
- require 'public_uid'
3
3
  require 'minitest/autorun'
4
- require 'active_record'
4
+ require 'public_uid'
5
5
 
6
6
  class Minitest::Spec
7
7
  class << self
@@ -9,6 +9,26 @@ class Minitest::Spec
9
9
  end
10
10
  end
11
11
 
12
- ActiveRecord::Base::establish_connection(adapter: 'sqlite3', database: ':memory:')
13
- ActiveRecord::Base.connection.execute(%{CREATE TABLE users (id INTEGER PRIMARY KEY, public_uid VARCHAR, custom_uid INTEGER);})
12
+ class TestConf
13
+ class << self
14
+ def root_path
15
+ Pathname.new(File.expand_path '../..', __FILE__)
16
+ end
14
17
 
18
+ def orm_modules
19
+ @orm_modules ||= []
20
+ end
21
+
22
+ def add_orm_module(konstant)
23
+ orm_modules << konstant
24
+ end
25
+ end
26
+ end
27
+
28
+ ['active_record'].each do |orm|
29
+ begin
30
+ load TestConf.root_path.join 'test', 'support', 'orm', "#{orm}.rb"
31
+ rescue LoadError
32
+ raise "ORM #{orm} not available"
33
+ end
34
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: public_uid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Valent
@@ -11,47 +11,47 @@ cert_chain: []
11
11
  date: 2014-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: orm_adapter
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
19
+ version: '0.5'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '0.5'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: activerecord
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -88,13 +88,16 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - .gitignore
91
+ - .travis.yml
91
92
  - Gemfile
92
93
  - LICENSE.txt
93
94
  - README.md
94
95
  - Rakefile
96
+ - lib/orm/active_record.rb
95
97
  - lib/public_uid.rb
96
98
  - lib/public_uid/generators/number_random.rb
97
99
  - lib/public_uid/generators/range_string.rb
100
+ - lib/public_uid/model.rb
98
101
  - lib/public_uid/set_public_uid.rb
99
102
  - lib/public_uid/version.rb
100
103
  - public_uid.gemspec
@@ -104,8 +107,9 @@ files:
104
107
  - test/models/custom_public_uid_column_test.rb
105
108
  - test/models/model_with_custom_generator_test.rb
106
109
  - test/models/model_with_generator_defaults_test.rb
110
+ - test/support/orm/active_record.rb
107
111
  - test/test_helper.rb
108
- homepage: ''
112
+ homepage: https://github.com/equivalent/public_uid
109
113
  licenses:
110
114
  - MIT
111
115
  metadata: {}
@@ -136,4 +140,5 @@ test_files:
136
140
  - test/models/custom_public_uid_column_test.rb
137
141
  - test/models/model_with_custom_generator_test.rb
138
142
  - test/models/model_with_generator_defaults_test.rb
143
+ - test/support/orm/active_record.rb
139
144
  - test/test_helper.rb