lazy-attribute 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjRlZTFmNGMxMmYyYzdlOTEwMjYxYzQyZmQ4YzI2NDNlOGRhMjI0Mg==
5
- data.tar.gz: !binary |-
6
- MTY4MjdkMTFjOWIzNTcwZmUzY2ZiMTU3N2Q4NDIyYzY4NjZlN2EzMw==
2
+ SHA1:
3
+ metadata.gz: c4725a9f464abc0ba205225cd030015de16f8160
4
+ data.tar.gz: 9fd550fd0fc061450b289d92534ab28464adb6e0
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- OTI3ZWUwYzE2ZGEyNmM0NThjMzc3NzhmNDM5MGZkYzA1MmZmYTIxODE1MzRj
10
- NTg1NWFlNTNmMDE2NDE1YzFhZTU5Y2E5NGJjYTAwZGI0ZmRlN2VmNzU5OTNk
11
- MTQ2ZTYwYmMwMzU4YWU5ZTM0NjQ4MmIzYTA4NjMxMDc2ZWJiZDk=
12
- data.tar.gz: !binary |-
13
- YjJiNjYwMzcwNTc2YTk4MmM0YzFhMmE4NTZiYWM5MDYzMWNlYzJjYTdkODA3
14
- MTcwODkxNmU4Y2RkZTliODYzMDQ2ZGQ4NDJjNzJiMWI4NzRhNWFhYjFiYjA3
15
- YThmZGU1MTU5OGIwYzU2Y2M2OGM4MzhiMjYxNTg0MDQxNjMxMDc=
6
+ metadata.gz: 7527058e4d773fd3ff8862738e62ade469844faf9f0f9bf4ad3cd76a93a6327db880c6e620f18718d4711cff153b7068d82fa6a4de3527985eabf8cc7cec6855
7
+ data.tar.gz: df6f5f924bb3fe2e9731bcade91a4dd640f68e8069104e00b4f9073670c84d21c2edcdd5393284e3923b45819f9bd976ac63a1df53cac6dbdb7343dff1edce98
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.0
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/selvachezhian/lazy-attribute.svg?branch=master)](https://travis-ci.org/selvachezhian/lazy-attribute)
2
+
1
3
  # Lazy Attribute
2
4
 
3
5
  This gem provides a simple and extremely flexible way to use most frequent find_by query in a model.
@@ -7,7 +9,7 @@ You can minimize find_by query of a particular attribute in a model using lazy a
7
9
 
8
10
  Add this line to your application's Gemfile:
9
11
 
10
- gem 'lazy-attribute', '~> 3.0.1'
12
+ gem 'lazy-attribute'
11
13
 
12
14
  And then execute:
13
15
 
data/Rakefile CHANGED
@@ -1,2 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
-
2
+ require 'rspec/core/rake_task'
3
+ task :default => :spec
4
+ RSpec::Core::RakeTask.new
@@ -6,8 +6,8 @@ require 'lazy/attribute/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'lazy-attribute'
8
8
  spec.version = Lazy::Attribute::VERSION
9
- spec.authors = ['Selva Chezhian', 'Saravanan Hari', 'Elavarasu']
10
- spec.email = %w(selvachezhian.labam@gmail.com sarhari@gmail.com elavarasu.pandiyan@gmail.com)
9
+ spec.authors = ['Selva Chezhian', 'Prasanna']
10
+ spec.email = %w(selvachezhian.labam@gmail.com prasannacse2005@gmail.com)
11
11
  spec.summary = %q{Minimizing find_by query for a single repeated attribute}
12
12
  spec.description = %q{This gem provides a simple and extremely flexible way to use most frequent find_by query in a model. You can minimize find_by query of a particular attribute in a model using lazy attribute gem.}
13
13
  spec.homepage = 'https://github.com/selvachezhian/lazy-attribute'
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'bundler', '~> 1.6'
23
23
  spec.add_development_dependency 'rake', '~> 0'
24
24
  spec.add_development_dependency 'yard'
25
+ spec.add_development_dependency 'rspec'
26
+
25
27
 
26
28
  spec.add_dependency 'activerecord', '~> 4.1'
27
29
 
@@ -13,47 +13,26 @@ module Lazy
13
13
  # ActiveRecord::RecordInvalid: Validation failed exception if any validation error thrown at the time of creation missing record
14
14
  #
15
15
  # @return [none]
16
+
16
17
  def lazy_attribute(attribute, options = {})
17
- default_options = { raise_error: false, key: :default, create_if_not_found: false }
18
+ default_options = {raise_error: false, key: '[]', create_if_not_found: false}
18
19
  options.reverse_merge!(default_options)
19
20
 
20
21
  singleton_class.instance_eval do
21
-
22
- if options[:key] == :default
23
-
24
- define_method('[]') do |identifier|
25
- send_dynamic_method(options, attribute, identifier)
26
- end
27
-
28
- else
29
-
30
- define_method(options[:key]) do |identifier|
31
- send_dynamic_method(options, attribute, identifier)
32
- end
33
-
22
+ define_method(options[:key]) do |identifier|
23
+ send(dynamic_find_method(options), {attribute.to_sym => identifier})
34
24
  end
35
-
36
25
  end
37
26
  end
38
27
 
39
28
  private
40
29
 
41
30
  def dynamic_find_method(options)
42
- if options[:raise_error] && options[:create_if_not_found]
43
- 'find_or_create_by!'
44
- elsif options[:raise_error] && !options[:create_if_not_found]
45
- 'find_by!'
46
- elsif !options[:raise_error] && options[:create_if_not_found]
47
- 'find_or_create_by'
48
- elsif !options[:raise_error] && !options[:create_if_not_found]
49
- 'find_by'
50
- end
31
+ create = 'or_create' if options[:create_if_not_found]
32
+ method = ['find', create, 'by'].compact.join('_')
33
+ method += '!' if options[:raise_error]
34
+ method
51
35
  end
52
-
53
- def send_dynamic_method(options, attr, identifier)
54
- send(dynamic_find_method(options), { attr.to_sym => identifier })
55
- end
56
-
57
36
  end
58
37
  end
59
38
  end
@@ -1,5 +1,5 @@
1
1
  module Lazy
2
2
  module Attribute
3
- VERSION = '3.1.1'
3
+ VERSION = '3.1.2'
4
4
  end
5
5
  end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ include Lazy::Attribute::ClassMethods
3
+
4
+ describe 'Lazy Attribute' do
5
+
6
+ context 'Dynamic Find' do
7
+ it 'should return find_by if no options are passed' do
8
+ method_name = dynamic_find_method({})
9
+ expect(method_name).to eql('find_by')
10
+ end
11
+
12
+ it 'should return find_or_create_by if create_if_not_found options is passed' do
13
+ method_name = dynamic_find_method({create_if_not_found: true})
14
+ expect(method_name).to eql('find_or_create_by')
15
+ end
16
+
17
+ it 'should return find_by! if raise_error option is passed' do
18
+ method_name = dynamic_find_method({raise_error: true})
19
+ expect(method_name).to eql('find_by!')
20
+ end
21
+
22
+ it 'should return find_or_create_by! if raise_error and create_if_not_found options are passed' do
23
+ method_name = dynamic_find_method({create_if_not_found: true, raise_error: true})
24
+ expect(method_name).to eql('find_or_create_by!')
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,4 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'lazy/attribute/lazy_attribute'
metadata CHANGED
@@ -1,71 +1,84 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazy-attribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Selva Chezhian
8
- - Saravanan Hari
9
- - Elavarasu
8
+ - Prasanna
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2015-03-31 00:00:00.000000000 Z
12
+ date: 2016-03-24 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
16
  requirement: !ruby/object:Gem::Requirement
18
17
  requirements:
19
- - - ~>
18
+ - - "~>"
20
19
  - !ruby/object:Gem::Version
21
20
  version: '1.6'
22
21
  type: :development
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
24
  requirements:
26
- - - ~>
25
+ - - "~>"
27
26
  - !ruby/object:Gem::Version
28
27
  version: '1.6'
29
28
  - !ruby/object:Gem::Dependency
30
29
  name: rake
31
30
  requirement: !ruby/object:Gem::Requirement
32
31
  requirements:
33
- - - ~>
32
+ - - "~>"
34
33
  - !ruby/object:Gem::Version
35
34
  version: '0'
36
35
  type: :development
37
36
  prerelease: false
38
37
  version_requirements: !ruby/object:Gem::Requirement
39
38
  requirements:
40
- - - ~>
39
+ - - "~>"
41
40
  - !ruby/object:Gem::Version
42
41
  version: '0'
43
42
  - !ruby/object:Gem::Dependency
44
43
  name: yard
45
44
  requirement: !ruby/object:Gem::Requirement
46
45
  requirements:
47
- - - ! '>='
46
+ - - ">="
48
47
  - !ruby/object:Gem::Version
49
48
  version: '0'
50
49
  type: :development
51
50
  prerelease: false
52
51
  version_requirements: !ruby/object:Gem::Requirement
53
52
  requirements:
54
- - - ! '>='
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
55
68
  - !ruby/object:Gem::Version
56
69
  version: '0'
57
70
  - !ruby/object:Gem::Dependency
58
71
  name: activerecord
59
72
  requirement: !ruby/object:Gem::Requirement
60
73
  requirements:
61
- - - ~>
74
+ - - "~>"
62
75
  - !ruby/object:Gem::Version
63
76
  version: '4.1'
64
77
  type: :runtime
65
78
  prerelease: false
66
79
  version_requirements: !ruby/object:Gem::Requirement
67
80
  requirements:
68
- - - ~>
81
+ - - "~>"
69
82
  - !ruby/object:Gem::Version
70
83
  version: '4.1'
71
84
  description: This gem provides a simple and extremely flexible way to use most frequent
@@ -73,13 +86,14 @@ description: This gem provides a simple and extremely flexible way to use most f
73
86
  in a model using lazy attribute gem.
74
87
  email:
75
88
  - selvachezhian.labam@gmail.com
76
- - sarhari@gmail.com
77
- - elavarasu.pandiyan@gmail.com
89
+ - prasannacse2005@gmail.com
78
90
  executables: []
79
91
  extensions: []
80
92
  extra_rdoc_files: []
81
93
  files:
82
- - .gitignore
94
+ - ".gitignore"
95
+ - ".rspec"
96
+ - ".travis.yml"
83
97
  - Gemfile
84
98
  - LICENSE.txt
85
99
  - README.md
@@ -88,6 +102,8 @@ files:
88
102
  - lib/lazy/attribute.rb
89
103
  - lib/lazy/attribute/lazy_attribute.rb
90
104
  - lib/lazy/attribute/version.rb
105
+ - spec/lazy/attribute/lazy_attribute_spec.rb
106
+ - spec/spec_helper.rb
91
107
  homepage: https://github.com/selvachezhian/lazy-attribute
92
108
  licenses:
93
109
  - MIT
@@ -98,18 +114,21 @@ require_paths:
98
114
  - lib
99
115
  required_ruby_version: !ruby/object:Gem::Requirement
100
116
  requirements:
101
- - - ! '>='
117
+ - - ">="
102
118
  - !ruby/object:Gem::Version
103
119
  version: '0'
104
120
  required_rubygems_version: !ruby/object:Gem::Requirement
105
121
  requirements:
106
- - - ! '>='
122
+ - - ">="
107
123
  - !ruby/object:Gem::Version
108
124
  version: '0'
109
125
  requirements: []
110
126
  rubyforge_project:
111
- rubygems_version: 2.2.2
127
+ rubygems_version: 2.4.6
112
128
  signing_key:
113
129
  specification_version: 4
114
130
  summary: Minimizing find_by query for a single repeated attribute
115
- test_files: []
131
+ test_files:
132
+ - spec/lazy/attribute/lazy_attribute_spec.rb
133
+ - spec/spec_helper.rb
134
+ has_rdoc: yard