lazy-attribute 2.0.1 → 3.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: 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>