lazy-attribute 0.0.2 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aa302b5db8a4ddfaba88cf021c2a05ee78af409e
4
- data.tar.gz: c5ad6d83b62c9472adf0f13489cddf2b2fc51c05
3
+ metadata.gz: bd598124eaa3acf6fbc9a237d358c90c352f7551
4
+ data.tar.gz: 1bc0ed90fea729014c97d987554020f165bd0d27
5
5
  SHA512:
6
- metadata.gz: 2b4f21fd79fe6952c5631717e27285110f5f8cdc64ea87c96beeb96c82ee26e6e6b6f46bace6be2d5c7f9ca0d9bbf71db658ee9b70ed847ed65ea19df37f55fe
7
- data.tar.gz: 2e89c37c4d3acfaeb637eb5daf3e43ce0ff8f7de0a1892afce2c3b3c0cdc6228060fade729248e46cb1c54869e1a46f392968997e3ccef1be6be69d143e5f5b0
6
+ metadata.gz: 0f60e9027d3a4fba2bafab2f2bb0b3fdd658fafa625d9e800e1d15b6aa03908e3e182c6b668a91d653e40a125028498a20c528ddd884493fb7c27b89b1bf2be7
7
+ data.tar.gz: d09841dd9f20c7dc3ce104cc4d625506ec1a95b27af13e1091f704bf405137495a94de095d51a02401432d4cc9dae16ec283c274047ed15911619fbde8957586
data/.idea/.rakeTasks CHANGED
@@ -1,7 +1,7 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
2
  <Settings><!--This file was automatically generated by Ruby plugin.
3
3
  You are allowed to:
4
4
  1. Remove rake task
5
5
  2. Add existing rake tasks
6
6
  To add existing rake tasks automatically delete this file and reload the project.
7
- --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build lazy-attribute-0.0.1.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install lazy-attribute-0.0.1.gem into system gems" fullCmd="install" taksId="install" /><RakeTask description="Create tag v0.0.1 and build and push lazy-attribute-0.0.1.gem to Rubygems" fullCmd="release" taksId="release" /></RakeGroup></Settings>
7
+ --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build lazy-attribute-0.0.1.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install lazy-attribute-0.0.1.gem into system gems" fullCmd="install" taksId="install" /><RakeTask description="Create tag v0.0.1 and build and push lazy-attribute-0.0.1.gem to Rubygems" fullCmd="release" taksId="release" /></RakeGroup></Settings>
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- # Lazy::Attribute
1
+ # Lazy Attribute
2
2
 
3
- TODO: Write a gem description
3
+ This gem provides a simple and extremely flexible way to use most frequent find_by query in a model.
4
+ You can minimize find_by query of a particular attribute in a model using lazy attribute gem.
4
5
 
5
6
  ## Installation
6
7
 
@@ -18,11 +19,31 @@ Or install it yourself as:
18
19
 
19
20
  ## Usage
20
21
 
21
- TODO: Write usage instructions here
22
+ In Model
23
+
24
+ ```ruby
25
+ class User < ActiveRecord::Base
26
+
27
+ lazy_attribute :email
28
+
29
+ end
30
+ ```
31
+
32
+ ```ruby
33
+ User['sample@email.com']
34
+ ```
35
+
36
+ Will give you the user object matches with the email and will return nil if record not found
37
+
38
+ ```ruby
39
+ lazy_attribute :email, :raise_error => true
40
+ ```
41
+
42
+ Will give you the user object matches with the email and will raise ``` ActiveRecord::RecordNotFound ``` Exception if record not found
22
43
 
23
44
  ## Contributing
24
45
 
25
- 1. Fork it ( https://github.com/[my-github-username]/lazy-attribute/fork )
46
+ 1. Fork it ( https://github.com/selvachezhian/lazy-attribute/fork )
26
47
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
48
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
49
  4. Push to the branch (`git push origin my-new-feature`)
@@ -4,21 +4,21 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'lazy/attribute/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "lazy-attribute"
7
+ spec.name = 'lazy-attribute'
8
8
  spec.version = Lazy::Attribute::VERSION
9
- spec.authors = ["Selva Chezhian"]
10
- spec.email = ["selvachezhian.labam@gmail.com"]
11
- spec.summary = %q{Write a short summary. Required.}
12
- spec.description = %q{Write a longer description. Optional.}
9
+ spec.authors = ['Selva Chezhian', 'Saravanan Hari']
10
+ spec.email = %w(selvachezhian.labam@gmail.com sarhari@gmail.com)
11
+ spec.summary = %q{Minimizing find_by query for a single repeated attribute}
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'
14
- spec.license = "MIT"
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.6"
21
+ spec.add_development_dependency 'bundler', '~> 1.6'
22
22
  spec.add_development_dependency 'rake', '~> 0'
23
23
  spec.add_dependency 'activerecord', '~> 4.1'
24
24
  end
@@ -2,14 +2,19 @@ module Lazy
2
2
  module Attribute
3
3
  module ClassMethods
4
4
 
5
- def lazy_attribute(attr)
5
+ def lazy_attribute(attr, options = {})
6
6
  singleton_class.instance_eval do
7
7
  define_method('[]') do |ident|
8
- send('find_by', { attr.to_sym => ident })
8
+ options[:raise_error] ||= false
9
+ send(dynamic_find_method(options[:raise_error]), { attr.to_sym => ident })
9
10
  end
10
11
  end
11
12
  end
12
13
 
14
+ def dynamic_find_method(raise_error = false)
15
+ raise_error ? 'find_by!' : 'find_by'
16
+ end
17
+
13
18
  end
14
19
  end
15
20
  end
@@ -1,5 +1,5 @@
1
1
  module Lazy
2
2
  module Attribute
3
- VERSION = "0.0.2"
3
+ VERSION = '2.0.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazy-attribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Selva Chezhian
8
+ - Saravanan Hari
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-12-10 00:00:00.000000000 Z
12
+ date: 2014-12-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -52,9 +53,12 @@ dependencies:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
55
  version: '4.1'
55
- description: Write a longer description. Optional.
56
+ description: This gem provides a simple and extremely flexible way to use most frequent
57
+ find_by query in a model. You can minimize find_by query of a particular attribute
58
+ in a model using lazy attribute gem.
56
59
  email:
57
60
  - selvachezhian.labam@gmail.com
61
+ - sarhari@gmail.com
58
62
  executables: []
59
63
  extensions: []
60
64
  extra_rdoc_files: []
@@ -99,5 +103,5 @@ rubyforge_project:
99
103
  rubygems_version: 2.2.2
100
104
  signing_key:
101
105
  specification_version: 4
102
- summary: Write a short summary. Required.
106
+ summary: Minimizing find_by query for a single repeated attribute
103
107
  test_files: []