resourcerer 0.2.3 → 0.3.0

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: 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: []