lazy-attribute 2.0.1 → 3.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: bd598124eaa3acf6fbc9a237d358c90c352f7551
4
- data.tar.gz: 1bc0ed90fea729014c97d987554020f165bd0d27
3
+ metadata.gz: dcebd941632c3e7f542524b136d7f23517beef58
4
+ data.tar.gz: 606bbd17c3b5b198a1608e81f82c9980343f0a21
5
5
  SHA512:
6
- metadata.gz: 0f60e9027d3a4fba2bafab2f2bb0b3fdd658fafa625d9e800e1d15b6aa03908e3e182c6b668a91d653e40a125028498a20c528ddd884493fb7c27b89b1bf2be7
7
- data.tar.gz: d09841dd9f20c7dc3ce104cc4d625506ec1a95b27af13e1091f704bf405137495a94de095d51a02401432d4cc9dae16ec283c274047ed15911619fbde8957586
6
+ metadata.gz: da0408b255f671f58f35da26ccde95b0af8ad611309d31a53d81fcbfc150b122a4113ab2328dcce1cb8fcf70743b355a47e5a52dee6d3bd81bf0c0079f1acbe5
7
+ data.tar.gz: cb1ccc754ad6f17376611df164b367101930700755e8d984772410a05c460e034cf175b95589d4912afd302f5b3ca24dc35b481a8a12222e7caeafb52775165c
data/.gitignore CHANGED
@@ -20,3 +20,5 @@ tmp
20
20
  *.o
21
21
  *.a
22
22
  mkmf.log
23
+
24
+ .idea
data/README.md CHANGED
@@ -36,11 +36,21 @@ User['sample@email.com']
36
36
  Will give you the user object matches with the email and will return nil if record not found
37
37
 
38
38
  ```ruby
39
- lazy_attribute :email, :raise_error => true
39
+ lazy_attribute :email, raise_error: true
40
40
  ```
41
41
 
42
42
  Will give you the user object matches with the email and will raise ``` ActiveRecord::RecordNotFound ``` Exception if record not found
43
43
 
44
+ You can use more than one lazy_attribute to your model by providing unique key for that
45
+
46
+ ```ruby
47
+ lazy_attribute :first_name, raise_error: true, key: :fn
48
+ ```
49
+
50
+ ```ruby
51
+ User.fn('first name')
52
+ ```
53
+
44
54
  ## Contributing
45
55
 
46
56
  1. Fork it ( https://github.com/selvachezhian/lazy-attribute/fork )
@@ -20,5 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency 'bundler', '~> 1.6'
22
22
  spec.add_development_dependency 'rake', '~> 0'
23
+ spec.add_development_dependency 'yard'
24
+
23
25
  spec.add_dependency 'activerecord', '~> 4.1'
26
+
27
+ spec.has_rdoc = 'yard'
24
28
  end
@@ -2,19 +2,47 @@ module Lazy
2
2
  module Attribute
3
3
  module ClassMethods
4
4
 
5
- def lazy_attribute(attr, options = {})
5
+ # Including the lazy_attribute gem to the model
6
+ #
7
+ # @param attribute [Symbol]
8
+ # @param [Hash] options
9
+ # @option options [Boolean] :raise_error (false) will raise ActiveRecord::RecordNotFoundException if the value set as true and the record not present
10
+ # @option options [Symbol] :key (:default) if the key parameter is not set, it will take the default as the key
11
+ #
12
+ # @return [none]
13
+ def lazy_attribute(attribute, options = {})
14
+ default_options = { raise_error: false, key: :default }
15
+ options.reverse_merge!(default_options)
16
+
6
17
  singleton_class.instance_eval do
7
- define_method('[]') do |ident|
8
- options[:raise_error] ||= false
9
- send(dynamic_find_method(options[:raise_error]), { attr.to_sym => ident })
18
+
19
+ if options[:key] == :default
20
+
21
+ define_method('[]') do |identifier|
22
+ send_dynamic_method(options, attribute, identifier)
23
+ end
24
+
25
+ else
26
+
27
+ define_method(options[:key]) do |identifier|
28
+ send_dynamic_method(options, attribute, identifier)
29
+ end
30
+
10
31
  end
32
+
11
33
  end
12
34
  end
13
35
 
36
+ private
37
+
14
38
  def dynamic_find_method(raise_error = false)
15
39
  raise_error ? 'find_by!' : 'find_by'
16
40
  end
17
41
 
42
+ def send_dynamic_method(options, attr, identifier)
43
+ send(dynamic_find_method(options[:raise_error]), { attr.to_sym => identifier })
44
+ end
45
+
18
46
  end
19
47
  end
20
48
  end
@@ -1,5 +1,5 @@
1
1
  module Lazy
2
2
  module Attribute
3
- VERSION = '2.0.1'
3
+ VERSION = '3.0.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazy-attribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Selva Chezhian
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-17 00:00:00.000000000 Z
12
+ date: 2015-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: yard
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: activerecord
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +78,6 @@ extensions: []
64
78
  extra_rdoc_files: []
65
79
  files:
66
80
  - ".gitignore"
67
- - ".idea/.name"
68
- - ".idea/.rakeTasks"
69
- - ".idea/encodings.xml"
70
- - ".idea/lazy-attribute.iml"
71
- - ".idea/misc.xml"
72
- - ".idea/modules.xml"
73
- - ".idea/scopes/scope_settings.xml"
74
- - ".idea/vcs.xml"
75
81
  - Gemfile
76
82
  - LICENSE.txt
77
83
  - README.md
@@ -105,3 +111,4 @@ signing_key:
105
111
  specification_version: 4
106
112
  summary: Minimizing find_by query for a single repeated attribute
107
113
  test_files: []
114
+ has_rdoc: yard
data/.idea/.name DELETED
@@ -1 +0,0 @@
1
- lazy-attribute
data/.idea/.rakeTasks DELETED
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Settings><!--This file was automatically generated by Ruby plugin.
3
- You are allowed to:
4
- 1. Remove rake task
5
- 2. Add existing rake tasks
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>
data/.idea/encodings.xml DELETED
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
- </project>
@@ -1,31 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="FacetManager">
4
- <facet type="gem" name="Ruby Gem">
5
- <configuration>
6
- <option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
7
- <option name="GEM_APP_TEST_PATH" value="$MODULE_DIR$/test" />
8
- <option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
9
- </configuration>
10
- </facet>
11
- </component>
12
- <component name="NewModuleRootManager">
13
- <content url="file://$MODULE_DIR$">
14
- <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
15
- </content>
16
- <orderEntry type="jdk" jdkName="RVM: ruby-2.1.2" jdkType="RUBY_SDK" />
17
- <orderEntry type="sourceFolder" forTests="false" />
18
- <orderEntry type="library" scope="PROVIDED" name="activemodel (v4.1.6, RVM: ruby-2.1.2) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="activerecord (v4.1.6, RVM: ruby-2.1.2) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="activesupport (v4.1.6, RVM: ruby-2.1.2) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="arel (v5.0.1.20140414130214, RVM: ruby-2.1.2) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="builder (v3.2.2, RVM: ruby-2.1.2) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="bundler (v1.6.2, RVM: ruby-2.1.2) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="i18n (v0.6.11, RVM: ruby-2.1.2) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="json (v1.8.1, RVM: ruby-2.1.2) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="minitest (v5.4.2, RVM: ruby-2.1.2) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="rake (v0.9.6, RVM: ruby-2.1.2) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.4, RVM: ruby-2.1.2) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.2, RVM: ruby-2.1.2) [gem]" level="application" />
30
- </component>
31
- </module>
data/.idea/misc.xml DELETED
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p547 [redmine]" project-jdk-type="RUBY_SDK" />
4
- </project>
data/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/../lazy_attribute/.idea/lazy-attribute.iml" filepath="$PROJECT_DIR$/../lazy_attribute/.idea/lazy-attribute.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,5 +0,0 @@
1
- <component name="DependencyValidationManager">
2
- <state>
3
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
- </state>
5
- </component>
data/.idea/vcs.xml DELETED
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
6
- </component>
7
- </project>