resourcerer 0.2.3 → 0.3.0

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: efd793cb62e4dc4237140caaafc4788f90d7512b
4
- data.tar.gz: 8c2cb136555283429df108083d70301283c8aca9
3
+ metadata.gz: 9e93c37e2be8821f943067ec855db980a6f9d988
4
+ data.tar.gz: 0ccf7f26495abab03c38fc3d6e02615c573262ed
5
5
  SHA512:
6
- metadata.gz: 5f7710479b0c98397f045ca492d2f30a6465630fbabc8a22b6cdbb0cf64a515aad3845ab66246d9989f528b8000ef98f185d828c0c6eb22e42089755ca9c9919
7
- data.tar.gz: 291983c1a28aafabe478019f8e24c5bd5b9ce774085c3482579db82252a2fa36495abfbf54646bde5803e165e68ed8e91ab34f5eb4f2baee304fccec5c3c2d22
6
+ metadata.gz: 37c61ffbf52613e9bcabe9267a8043195dfb6ba591967c547aafec9958fce936a3cfa80a20ed5b35f36418001b2fe7572df10270a075e7844504d141db1691a3
7
+ data.tar.gz: f3c3b7e8d6c420891dd48b8e6185a804c13cb900a73046e688980eb78edf2fdcbd66d06777368f418434e4119085af23d538698e5278e81e5bdaf7c828649be9
@@ -0,0 +1,12 @@
1
+ require 'resourcerer/resource_configuration'
2
+
3
+ module Resourcerer
4
+ module Configuration
5
+ class StrongParameters < ResourceConfiguration
6
+
7
+ def permit(attrs)
8
+ options[:permitted_attributes] = attrs
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,10 +1,18 @@
1
1
  require 'resourcerer/resource'
2
- require 'simple_memoizer'
2
+ require 'resourcerer/strategies/optional_strategy'
3
+ require 'pakiderm'
3
4
 
4
5
  module Resourcerer
5
6
  module Resourceable
6
7
  extend ActiveSupport::Concern
7
- include SimpleMemoizer
8
+
9
+ included do
10
+ extend Pakiderm
11
+ end
12
+
13
+ def resource(name, options={}, &block)
14
+ Resource.for(name, options.merge(strategy: Strategies::OptionalStrategy), block).call(self)
15
+ end
8
16
 
9
17
  module ClassMethods
10
18
 
@@ -13,7 +21,7 @@ module Resourcerer
13
21
  end
14
22
 
15
23
  def resource(name, options={}, &block)
16
- check_method_available!(name)
24
+ check_method_available(name)
17
25
  _resources[name] = resource = Resource.for(name, options, block)
18
26
  define_resource_method(name, resource)
19
27
  end
@@ -22,16 +30,13 @@ module Resourcerer
22
30
 
23
31
  def define_resource_method(name, resource)
24
32
  define_method(name) { resource.call(self) }
25
- memoize name
33
+ memoize name, assignable: true
26
34
  hide_action name, "#{name}="
27
35
  end
28
36
 
29
- def check_method_available!(name)
37
+ def check_method_available(name)
30
38
  if self.respond_to?(name.to_sym)
31
- Kernel.abort "[ERROR] You are adding a singular resource by the `#{name}` method, " \
32
- "which overrides an existing method of the same name. " \
33
- "Consider a different resource name\n" \
34
- "#{caller.first}"
39
+ Kernel.warn "[Resourcerer] Overriding #{name} method."
35
40
  end
36
41
  end
37
42
  end
@@ -0,0 +1,24 @@
1
+ require 'resourcerer/strategies/default_strategy'
2
+
3
+ module Resourcerer
4
+ module Strategies
5
+ class OptionalStrategy < DefaultStrategy
6
+
7
+ def resource
8
+ find_resource(id) if id
9
+ end
10
+
11
+ def find_resource(id)
12
+ if config.optional
13
+ model.where(finder_attribute => id).first
14
+ else
15
+ model.find_by(finder_attribute => id)
16
+ end
17
+ end
18
+
19
+ def id
20
+ @id ||= params[finder_param]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,10 +1,31 @@
1
1
  require 'resourcerer/strategies/default_strategy'
2
2
  require 'resourcerer/strategies/assign_from_method'
3
+ require 'resourcerer/configuration/strong_parameters'
3
4
 
4
5
  module Resourcerer
5
6
  module Strategies
6
7
  class StrongParametersStrategy < DefaultStrategy
7
8
  include Strategies::AssignFromMethod
9
+
10
+ delegate :permitted_attributes, to: :config
11
+
12
+ def attributes
13
+ strong_attributes || super
14
+ end
15
+
16
+ protected
17
+
18
+ def build_configuration(options)
19
+ Configuration::StrongParameters.new(options)
20
+ end
21
+
22
+ private
23
+
24
+ def strong_attributes
25
+ if permitted_attributes && params.has_key?(param_key)
26
+ params.require(param_key).permit(*permitted_attributes)
27
+ end
28
+ end
8
29
  end
9
30
  end
10
31
  end
metadata CHANGED
@@ -1,45 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resourcerer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Máximo Mussini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-31 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
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
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: simple_memoizer
28
+ name: pakiderm
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: Extracted from decent exposure, allows you to define resources to automate
42
- finding a record and assigning attributes.
41
+ description: Define resources to automate finding a record and assigning attributes.
43
42
  email:
44
43
  - maximomussini@gmail.com
45
44
  executables: []
@@ -49,6 +48,7 @@ extra_rdoc_files:
49
48
  files:
50
49
  - README.md
51
50
  - lib/resourcerer.rb
51
+ - lib/resourcerer/configuration/strong_parameters.rb
52
52
  - lib/resourcerer/inflector.rb
53
53
  - lib/resourcerer/resource.rb
54
54
  - lib/resourcerer/resource_configuration.rb
@@ -58,6 +58,7 @@ files:
58
58
  - lib/resourcerer/strategies/assign_from_params.rb
59
59
  - lib/resourcerer/strategies/default_strategy.rb
60
60
  - lib/resourcerer/strategies/eager_attributes_strategy.rb
61
+ - lib/resourcerer/strategies/optional_strategy.rb
61
62
  - lib/resourcerer/strategies/strong_parameters_strategy.rb
62
63
  - lib/resourcerer/strategy.rb
63
64
  homepage: https://github.com/ElMassimo/resourcerer
@@ -66,17 +67,17 @@ licenses:
66
67
  metadata: {}
67
68
  post_install_message:
68
69
  rdoc_options:
69
- - --charset=UTF-8
70
+ - "--charset=UTF-8"
70
71
  require_paths:
71
72
  - lib
72
73
  required_ruby_version: !ruby/object:Gem::Requirement
73
74
  requirements:
74
- - - '>='
75
+ - - ">="
75
76
  - !ruby/object:Gem::Version
76
77
  version: '2.0'
77
78
  required_rubygems_version: !ruby/object:Gem::Requirement
78
79
  requirements:
79
- - - '>='
80
+ - - ">="
80
81
  - !ruby/object:Gem::Version
81
82
  version: '0'
82
83
  requirements: []