cyrax 0.6.1 → 0.7.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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzIwOTAzYWY3MDAzOGIzMzgxYTNkNTAzNWQxYmIzZmVkZDZkYWVjYQ==
4
+ OGI2YjFjYzU3ZDA4OGJlOTNjMWQzNjcxMDMwMzYzODM3ZmRhNTVhNQ==
5
5
  data.tar.gz: !binary |-
6
- ZGE0ZDNhZjAxYmU4MDIwNzhhOThiOWU1MzgwMmZhNmU2ZGRhYjI4NA==
6
+ ZDZjNzE5ZTM2NTAxMjI2MjllOWIyOWQ5NDk4NTQ5ZWNhYTBiYWRlZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NDcyNDVjNzA1ZTQxNTExMTk3NTA4ZWViMGYyZDk1MTc2N2MzYTc3OTM0MWIy
10
- YmM5MzQ1MGQ4ZjRjYTQyNmQyNmNkOGZjODhmNDQ3Y2JiM2Q0OGJkZmQxMWU4
11
- NDkzYTk1ZTQyMGU1NWQzODA4OWQwZGJlNTdmODQ0ZmMxOWFjYTU=
9
+ YjZmOTc3OWE5MWExZmEyYmMyMTkwNGUxNDNmYzZmZjEzMTU0NWVjMTEyNTQ5
10
+ NmZkMDQxZDI1YWMxMTIyMjhhMTFlODZlZjJiYjhjMmFjYTc4YzNjZDE1MGNh
11
+ YjA4OWRiZDhiYWEzZGM0Mjc2NGVkYTNlNGM1ZjA4MjIxMWYyMDM=
12
12
  data.tar.gz: !binary |-
13
- M2IxOTZkMWZhNjQ2M2EzNDEwMTFhNGY5NGMwY2NlZmFiNTI5ZThjZDc1MTU4
14
- ZTAyNmY3MDg3OWQ1NTg4YThjMTE5ZjEzYTI1NWYyYTU3MzgzNGE0YThmZjQy
15
- ZmZhNmIxN2E2NDJiNWQxNzRiNmNmYzg3ZTkwZTcwMzZhOGVmYTU=
13
+ ZTQ5YWM4NTczOTk2N2M0YzUzZDUwMWMyNWRjZmIxZDUwYWRiMzI2YzNmZjZi
14
+ Yzg4ZWNjYjVjYjA1YTE4NDY4OTk5YjZiMzk1NDczYWQ5ODc3NTJhY2I0YWRj
15
+ ZTZiNjAyMWYxOTRjNjE2MTIyOGIyNDIzMzg3NDYzYzNmNWFmOTM=
@@ -19,6 +19,10 @@ module Cyrax::Extensions
19
19
  end
20
20
 
21
21
  module ClassMethods
22
+ def inherited(subclass)
23
+ subclass._repository_options = self._repository_options.try(:clone)
24
+ end
25
+
22
26
  def repository(name = nil, &block)
23
27
  if name.is_a?(Symbol)
24
28
  klass, finder_name = nil, name
@@ -33,11 +37,7 @@ module Cyrax::Extensions
33
37
  self._repository_class = klass
34
38
  end
35
39
  if block_given?
36
- # temporary workaround. we should not use one object hash for parent and childrens
37
- if self._repository_options.present?
38
- self._repository_options = self._repository_options.dup
39
- end
40
-
40
+ self._repository_options = self._repository_options.try(:clone)
41
41
  self._repository_options ||= {}
42
42
  self._repository_options[:finders] ||= {}
43
43
  self._repository_options[:finders][finder_name || :scope] = block
@@ -28,12 +28,14 @@ module Cyrax::Extensions
28
28
  # Used for :create action in controller
29
29
  # @return [Cyrax::Response] response
30
30
  def create(custom_attributes = nil, &block)
31
- resource = repository.build(nil, custom_attributes||resource_attributes)
31
+ resource = repository.build(nil)
32
+ old_resource = resource.dup
33
+ set_resource_attributes(resource, custom_attributes||resource_attributes)
32
34
  authorize_resource!(:create, resource)
33
35
  transaction do
34
36
  if repository.save(resource)
35
37
  set_message(:created)
36
- block.call(resource) if block_given?
38
+ block.call(resource, old_resource) if block_given?
37
39
  end
38
40
  end
39
41
  respond_with(resource)
@@ -56,12 +58,14 @@ module Cyrax::Extensions
56
58
  # Used for :update action in controller
57
59
  # @return [Cyrax::Response] response
58
60
  def update(custom_attributes = nil, &block)
59
- resource = repository.build(resource_params_id, custom_attributes||resource_attributes)
61
+ resource = repository.build(resource_params_id)
62
+ old_resource = resource.dup
63
+ set_resource_attributes(resource, custom_attributes||resource_attributes)
60
64
  authorize_resource!(:update, resource)
61
65
  transaction do
62
66
  if repository.save(resource)
63
67
  set_message(:updated)
64
- block.call(resource) if block_given?
68
+ block.call(resource, old_resource) if block_given?
65
69
  end
66
70
  end
67
71
  respond_with(resource)
@@ -105,26 +109,8 @@ module Cyrax::Extensions
105
109
  params[:id]
106
110
  end
107
111
 
108
- # DEPRECATED METHODS
109
- def resource_scope
110
- ActiveSupport::Deprecation.warn "#resource_scope inside Resource deprecated. Use repository.scope instead."
111
- repository.scope
112
- end
113
- def build_collection
114
- ActiveSupport::Deprecation.warn "#build_collection inside Resource deprecated. Use repository.find_all instead."
115
- repository.find_all
116
- end
117
- def find_resource(id)
118
- ActiveSupport::Deprecation.warn "#find_resource inside Resource deprecated. Use repository.find instead."
119
- repository.find(id)
120
- end
121
- def save_resource(resource)
122
- ActiveSupport::Deprecation.warn "#save_resource inside Resource deprecated. Use repository.save instead."
123
- repository.save(resource)
124
- end
125
- def delete_resource(resource)
126
- ActiveSupport::Deprecation.warn "#delete_resource inside Resource deprecated. Use repository.delete instead."
127
- repository.delete(resource)
112
+ def set_resource_attributes(resource, attributes = {})
113
+ resource.attributes = attributes
128
114
  end
129
115
  end
130
116
  end
@@ -1,3 +1,3 @@
1
1
  module Cyrax
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -77,7 +77,8 @@ module Cyrax
77
77
  before { repository.stub(:build).and_return(resource) }
78
78
  it 'responds with resource' do
79
79
  repository.should_receive(:save).with(resource)
80
- repository.should_receive(:build).with(nil, params)
80
+ repository.should_receive(:build).with(nil)
81
+ subject.should_receive(:set_resource_attributes).with(resource, params)
81
82
  subject.should_receive(:respond_with).with(resource)
82
83
  subject.create(params)
83
84
  end
@@ -105,8 +106,9 @@ module Cyrax
105
106
  let(:params) { {foo: 'bar'} }
106
107
  before { repository.stub(:build).and_return(resource) }
107
108
  it 'responds with resource' do
108
- repository.should_receive(:build).with(123, params)
109
+ repository.should_receive(:build).with(123)
109
110
  repository.should_receive(:save).with(resource)
111
+ subject.should_receive(:set_resource_attributes).with(resource, params)
110
112
  subject.should_receive(:respond_with).with(resource)
111
113
  subject.update(params)
112
114
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyrax
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Droidlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-08 00:00:00.000000000 Z
11
+ date: 2014-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -158,3 +158,4 @@ test_files:
158
158
  - spec/cyrax/response_spec.rb
159
159
  - spec/cyrax/serializer_spec.rb
160
160
  - spec/spec_helper.rb
161
+ has_rdoc: