yaoc 0.0.12 → 0.0.13

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: 3ccbf393e54fe0ddf71fa88ea5fc06801413c441
4
- data.tar.gz: 7e903edc8bffc06266e8da21162533232e3b8071
3
+ metadata.gz: 7d41454b6c8f8f911daba762a29d4d4447f826a6
4
+ data.tar.gz: cb825e83ede21f8f54033564bbc7864627a580d3
5
5
  SHA512:
6
- metadata.gz: 53b94a0ca841ee218140036df34b1e627180d3296eb863c08da1b8ee11a35f2a7f0dc45723f69c3c71267f84630814d5664e315deb12066017126ebc3ddfe266
7
- data.tar.gz: 7481d47939d4ab1560f82155ba787340875976da3a5e6a2fbcbff1709eaad2ab89d5545d7bd2da9ae43de5b6dc401b021c0a097f8ae71fcda8449d66d42ea813
6
+ metadata.gz: 60701029b179a8c63f027c07344eafddafcdda486141c0abe5d036b787a5c31aae4a99fa0e1317bdc3a33e866073d54a415f5e079c96266d005a435dc2722d11
7
+ data.tar.gz: 0663cc0309770642fc542b246175b4881d43ef77d2ceeecd7f620a2ca7326fb1ba5bb3fa1fd650af64e304eda02b2b383d5b9090aec1bb4f29da8de54a717f82
@@ -1,10 +1,9 @@
1
1
  require "yaoc/version"
2
2
 
3
+ require 'scoped_storage'
4
+
3
5
  require 'yaoc/helper/struct_hash_constructor'
4
6
  require 'yaoc/helper/to_proc_delegator'
5
- require 'yaoc/helper/thread_local_storage'
6
- require 'yaoc/helper/thread_global_storage'
7
- require 'yaoc/helper/scope'
8
7
 
9
8
  require 'yaoc/mapper_registry'
10
9
  require 'yaoc/mapping_base'
@@ -3,11 +3,11 @@ module Yaoc
3
3
  module_function
4
4
 
5
5
  def scope_storage(new_storage)
6
- @scope = Helper::Scope.new("mappings", new_storage)
6
+ @scope = ScopedStorage::Scope.new("mappings", new_storage)
7
7
  end
8
8
 
9
9
  def scope
10
- @scope ||= Helper::Scope.new("mappings")
10
+ @scope ||= ScopedStorage::Scope.new("mappings")
11
11
  end
12
12
 
13
13
  def add(key, mapper)
@@ -1,3 +1,3 @@
1
1
  module Yaoc
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -21,7 +21,7 @@ describe Yaoc::MapperRegistry do
21
21
 
22
22
  describe '.scope_storage' do
23
23
  it 'supports the change of scope storage' do
24
- expect {subject.scope_storage(Yaoc::Helper::ThreadLocalStorage)}.not_to raise_error
24
+ expect {subject.scope_storage(ScopedStorage::ThreadLocalStorage)}.not_to raise_error
25
25
  end
26
26
 
27
27
  end
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.required_ruby_version = '>= 2.0.0'
22
+ spec.add_runtime_dependency 'scoped_storage'
22
23
 
23
24
  spec.add_development_dependency "bundler", "~> 1.5"
24
25
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieter Späth
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
11
+ date: 2014-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: scoped_storage
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -215,10 +229,7 @@ files:
215
229
  - examples/all_examples.rb
216
230
  - lib/yaoc.rb
217
231
  - lib/yaoc/converter_builder.rb
218
- - lib/yaoc/helper/scope.rb
219
232
  - lib/yaoc/helper/struct_hash_constructor.rb
220
- - lib/yaoc/helper/thread_global_storage.rb
221
- - lib/yaoc/helper/thread_local_storage.rb
222
233
  - lib/yaoc/helper/to_proc_delegator.rb
223
234
  - lib/yaoc/many_to_one_mapper_chain.rb
224
235
  - lib/yaoc/mapper_registry.rb
@@ -239,14 +250,10 @@ files:
239
250
  - spec/acceptance/map_to_objects_with_lazy_loading_spec.rb
240
251
  - spec/acceptance/map_to_objects_with_positional_constructors_spec.rb
241
252
  - spec/integration/lib/yaoc/converter_builder_spec.rb
242
- - spec/integration/lib/yaoc/helper/scope_spec.rb
243
253
  - spec/spec_helper.rb
244
254
  - spec/support/feature.rb
245
255
  - spec/unit/lib/yaoc/converter_builder_spec.rb
246
- - spec/unit/lib/yaoc/helper/scope_spec.rb
247
256
  - spec/unit/lib/yaoc/helper/struct_hash_constructor_spec.rb
248
- - spec/unit/lib/yaoc/helper/thread_global_storage_spec.rb
249
- - spec/unit/lib/yaoc/helper/thread_local_storage_spec.rb
250
257
  - spec/unit/lib/yaoc/helper/to_proc_delegator_spec.rb
251
258
  - spec/unit/lib/yaoc/many_to_one_mapper_chain_spec.rb
252
259
  - spec/unit/lib/yaoc/mapper_registry_spec.rb
@@ -292,14 +299,10 @@ test_files:
292
299
  - spec/acceptance/map_to_objects_with_lazy_loading_spec.rb
293
300
  - spec/acceptance/map_to_objects_with_positional_constructors_spec.rb
294
301
  - spec/integration/lib/yaoc/converter_builder_spec.rb
295
- - spec/integration/lib/yaoc/helper/scope_spec.rb
296
302
  - spec/spec_helper.rb
297
303
  - spec/support/feature.rb
298
304
  - spec/unit/lib/yaoc/converter_builder_spec.rb
299
- - spec/unit/lib/yaoc/helper/scope_spec.rb
300
305
  - spec/unit/lib/yaoc/helper/struct_hash_constructor_spec.rb
301
- - spec/unit/lib/yaoc/helper/thread_global_storage_spec.rb
302
- - spec/unit/lib/yaoc/helper/thread_local_storage_spec.rb
303
306
  - spec/unit/lib/yaoc/helper/to_proc_delegator_spec.rb
304
307
  - spec/unit/lib/yaoc/many_to_one_mapper_chain_spec.rb
305
308
  - spec/unit/lib/yaoc/mapper_registry_spec.rb
@@ -1,34 +0,0 @@
1
- module Yaoc
2
- module Helper
3
- class Scope
4
-
5
- attr_accessor :scope_name, :storage_source
6
-
7
- def initialize(scope_name="default", storage_source=ThreadGlobalStorage)
8
- self.scope_name = scope_name
9
- self.storage_source = storage_source
10
- end
11
-
12
- def storage
13
- storage_source.for(scope_name)
14
- end
15
-
16
- def []=(key, value)
17
- self.storage[key]=value
18
- end
19
-
20
- def [](key)
21
- self.storage[key]
22
- end
23
-
24
- def clear!
25
- self.storage.clear
26
- end
27
-
28
- def fetch(*args, &block)
29
- self.storage.fetch(*args, &block)
30
- end
31
-
32
- end
33
- end
34
- end
@@ -1,56 +0,0 @@
1
- module Yaoc
2
- module Helper
3
- require 'thread'
4
-
5
- class ThreadGlobalStorage
6
- class << self
7
- private :new
8
- end
9
-
10
- attr_accessor :data
11
-
12
- @mutex = Mutex.new
13
-
14
- def self.mutex
15
- @mutex
16
- end
17
-
18
- def self.for(scope_name="default")
19
- mutex.synchronize {
20
- @storage ||= {}
21
- @storage[scope_name] ||= new
22
- }
23
- end
24
-
25
- def initialize
26
- self.data||={}
27
- end
28
-
29
- def []=(key, value)
30
- mutex.synchronize {
31
- self.data[key]=value
32
- }
33
- end
34
-
35
- def [](key)
36
- self.data[key]
37
- end
38
-
39
- def clear!
40
- mutex.synchronize {
41
- self.data.clear
42
- }
43
- end
44
-
45
- def fetch(*args, &block)
46
- self.data.fetch(*args, &block)
47
- end
48
-
49
- def mutex
50
- self.class.mutex
51
- end
52
-
53
- end
54
- end
55
- end
56
-
@@ -1,37 +0,0 @@
1
- module Yaoc
2
- module Helper
3
- class ThreadLocalStorage
4
- class << self
5
- private :new
6
- end
7
-
8
- attr_accessor :data
9
-
10
- def self.for(scope_name="default")
11
- Thread.current["_#{name}_#{scope_name}"] ||= new
12
- end
13
-
14
- def initialize
15
- self.data||={}
16
- end
17
-
18
- def []=(key, value)
19
- self.data[key]=value
20
- end
21
-
22
- def [](key)
23
- self.data[key]
24
- end
25
-
26
- def clear!
27
- self.data.clear
28
- end
29
-
30
- def fetch(*args, &block)
31
- self.data.fetch(*args, &block)
32
- end
33
-
34
- end
35
- end
36
- end
37
-
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yaoc::Helper::Scope do
4
-
5
- subject{
6
- Yaoc::Helper::Scope.new("default")
7
- }
8
-
9
- it 'works with the default storage' do
10
- subject['new_value'] = 123
11
- expect(subject.fetch('new_value')).to eq 123
12
- end
13
-
14
- end
@@ -1,57 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yaoc::Helper::Scope do
4
- class DummyStorage
5
- def initialize(new_data)
6
- @data = new_data
7
- end
8
-
9
- def for(*args)
10
- data
11
- end
12
-
13
- def data
14
- @data
15
- end
16
-
17
- end
18
-
19
- subject{
20
- Yaoc::Helper::Scope.new("default", DummyStorage.new(data_double))
21
- }
22
-
23
- let(:data_double){
24
- {}
25
- }
26
-
27
- describe '#[]=' do
28
- it 'let me set values' do
29
- subject['new_value'] = 123
30
- expect(subject.fetch('new_value')).to eq 123
31
- end
32
- end
33
-
34
- describe '#[]' do
35
- it 'let me fetch values' do
36
- subject['new_value'] = 123
37
- expect(subject['new_value']).to eq 123
38
- end
39
- end
40
-
41
- describe '#clear!' do
42
- it 'let me fetch values' do
43
- subject['new_value'] = 123
44
- subject.clear!
45
- expect(subject['new_value']).to be_nil
46
- end
47
- end
48
-
49
- describe '#fetch' do
50
- it 'works like hash fetch' do
51
- fetched_value = subject.fetch('some_key'){|*args| args}
52
-
53
- expect(fetched_value).to eq ['some_key']
54
- end
55
- end
56
-
57
- end
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yaoc::Helper::ThreadGlobalStorage do
4
- subject{
5
- Yaoc::Helper::ThreadGlobalStorage
6
- }
7
-
8
- let(:storage){
9
- subject.for
10
- }
11
-
12
- describe '.for' do
13
- it 'creates a new object for all threads' do
14
- subject.for
15
-
16
- threat_one_object_id = nil
17
- threat_two_object_id = nil
18
- threats = []
19
-
20
- threats << Thread.new{
21
- threat_one_object_id = Yaoc::Helper::ThreadLocalStorage.for
22
- }
23
-
24
- threats << Thread.new{
25
- threat_two_object_id = Yaoc::Helper::ThreadLocalStorage.for
26
- }
27
-
28
- threats.each &:join
29
-
30
- expect(threat_one_object_id).not_to eq threat_two_object_id
31
- end
32
-
33
- it 'supports naming different scopes' do
34
- second_scope = subject.for 'the second scope'
35
- expect(second_scope.object_id).not_to be subject.for.object_id
36
- end
37
- end
38
-
39
- it 'supports hash like accessors' do
40
- storage['key'] = 1
41
- expect(storage['key']).to eq 1
42
- expect(storage.fetch 'key').to eq 1
43
-
44
- storage.clear!
45
-
46
- expect(storage['key']).to be_nil
47
- end
48
-
49
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Yaoc::Helper::ThreadLocalStorage do
4
- subject{
5
- Yaoc::Helper::ThreadLocalStorage
6
- }
7
-
8
- let(:storage){
9
- subject.for
10
- }
11
-
12
- describe '.for' do
13
- it 'creates a new object for every thread' do
14
- subject.for
15
-
16
- threat_one_object_id = nil
17
- threat_two_object_id = nil
18
- threats = []
19
-
20
- threats << Thread.new{
21
- threat_one_object_id = Yaoc::Helper::ThreadLocalStorage.for
22
- }
23
-
24
- threats << Thread.new{
25
- threat_two_object_id = Yaoc::Helper::ThreadLocalStorage.for
26
- }
27
-
28
- threats.each &:join
29
-
30
- expect(threat_one_object_id).not_to eq threat_two_object_id
31
- end
32
-
33
- it 'supports naming different scopes' do
34
- second_scope = subject.for 'the second scope'
35
- expect(second_scope.object_id).not_to be subject.for.object_id
36
- end
37
- end
38
-
39
- it 'supports hash like accessors' do
40
- storage['key'] = 1
41
- expect(storage['key']).to eq 1
42
- expect(storage.fetch 'key').to eq 1
43
-
44
- storage.clear!
45
-
46
- expect(storage['key']).to be_nil
47
-
48
- end
49
-
50
- end