railjet 2.0.pre → 2.0.pre1

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: b64593e5bffd2ea6b843a49c9450aa1317e0441e
4
- data.tar.gz: fae9a51b5b4a8570630914aa2eecd2f3fa6ac604
3
+ metadata.gz: 29a7d18d2b8bc0852295524995ff8780b7551a83
4
+ data.tar.gz: 965c764dff2977147ee038e380f8dbd79f471435
5
5
  SHA512:
6
- metadata.gz: d62aa6add7ec2127851375f53d54532aa02e197fbf93704458ae248c663c5d328db6f1aab726584bbfdaa4a54272bc417a44f7975abf1fea3090c2725520a129
7
- data.tar.gz: c7df7c2b072fb6aa20869d7f61d129d09bbffe428b776071338853f9ca3af1cf3afb7f0a6a06eb85e0385d8463b2deb79537e921ffffa3e6b3cb90322af202bd
6
+ metadata.gz: f19fdbd2153690f1293b155749107049c31d1a545a6c5b8a5888d8c184ed46a2fe0bf7d337eae123fdd4215ae39a1905d703e906a3d51649695320fb0ee0327d
7
+ data.tar.gz: aa2060950a39502cb65ef0adfb252931dacdf600a1604d25a0d89e90fcfa7da337cca615f00d27dbdafc4be6387d1c6982064da4d055c1667df42c7055665d88
@@ -1,26 +1,28 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- railjet (2.0.pre)
5
- activemodel (> 4)
6
- activesupport (> 4)
4
+ railjet (2.0.pre1)
5
+ activemodel (< 5)
6
+ activesupport (< 5)
7
7
  validates_timeliness (~> 4.0.2)
8
8
  virtus (~> 1.0.2)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activemodel (5.1.4)
14
- activesupport (= 5.1.4)
15
- activesupport (5.1.4)
16
- concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ activemodel (4.2.10)
14
+ activesupport (= 4.2.10)
15
+ builder (~> 3.1)
16
+ activesupport (4.2.10)
17
17
  i18n (~> 0.7)
18
18
  minitest (~> 5.1)
19
+ thread_safe (~> 0.3, >= 0.3.4)
19
20
  tzinfo (~> 1.1)
20
21
  axiom-types (0.1.1)
21
22
  descendants_tracker (~> 0.0.4)
22
23
  ice_nine (~> 0.11.0)
23
24
  thread_safe (~> 0.3, >= 0.3.1)
25
+ builder (3.2.3)
24
26
  coderay (1.1.2)
25
27
  coercible (1.0.0)
26
28
  descendants_tracker (~> 0.0.1)
@@ -38,7 +40,8 @@ GEM
38
40
  netrc (>= 0.10.0, < 0.12.0.pre)
39
41
  thor (>= 0.14.0, < 1.0.0.pre)
40
42
  highline (1.7.8)
41
- i18n (0.8.6)
43
+ i18n (0.9.0)
44
+ concurrent-ruby (~> 1.0)
42
45
  ice_nine (0.11.2)
43
46
  method_source (0.9.0)
44
47
  minitest (5.10.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.pre
1
+ 2.0.pre1
@@ -32,7 +32,7 @@ module Railjet
32
32
  ivar = "@#{repository.type}"
33
33
  dao = kwargs[repository.type]
34
34
 
35
- instance_variable_set(ivar, repository.new(registry, dao: dao))
35
+ instance_variable_set(ivar, repository.new(registry, :"#{repository.type}" => dao))
36
36
  self.class.send :attr_reader, repository.type
37
37
  end
38
38
  end
@@ -2,14 +2,14 @@ module Railjet
2
2
  module Repository
3
3
  class Generic < Module
4
4
  class << self
5
- def [](dao)
5
+ def [](dao = nil)
6
6
  new(dao)
7
7
  end
8
8
 
9
9
  attr_accessor :type
10
10
  end
11
11
 
12
- def initialize(dao)
12
+ def initialize(dao = nil)
13
13
  @dao = dao
14
14
  @type = self.class.type
15
15
  end
@@ -18,34 +18,42 @@ module Railjet
18
18
  define_dao_accessor(@type, @dao)
19
19
  define_type_accessor(klass, @type)
20
20
  define_initializer(klass)
21
-
22
- klass.send :include, self.class::RepositoryMethods
21
+ include_repository_methods(klass)
23
22
  end
24
23
 
25
24
  private
26
25
 
27
26
  def define_dao_accessor(type, dao)
28
27
  define_method type do
29
- @dao ||= dao.constantize
28
+ instance_variable_get("@#{type}") || instance_variable_set("@#{type}", (dao.constantize if dao.respond_to?(:constantize)))
30
29
  end
31
30
  end
32
31
 
33
32
  def define_type_accessor(klass, type)
34
- klass.define_singleton_method(:type) do
35
- type
36
- end
33
+ klass.define_singleton_method(:type) { type }
37
34
  end
38
35
 
39
36
  def define_initializer(klass)
40
37
  klass.class_eval do
41
38
  attr_reader :registry
42
39
 
43
- def initialize(registry, dao: nil)
40
+ def initialize(registry, **kwargs)
44
41
  @registry = registry
45
- @dao = dao
42
+ instance_variable_set("@#{self.class.type}", kwargs.fetch(self.class.type, nil))
43
+
44
+ # Let's check if DAO was set through registry or set when including inner repo mixin
45
+ unless send(self.class.type)
46
+ raise ArgumentError, "Your repository #{self.class} need a DAO. It can be set with inner-repo mixin or through registry with `#{self.class.type}:` option"
47
+ end
46
48
  end
47
49
  end
48
50
  end
51
+
52
+ def include_repository_methods(klass)
53
+ if defined?(self.class::RepositoryMethods)
54
+ klass.send :include, self.class::RepositoryMethods
55
+ end
56
+ end
49
57
  end
50
58
  end
51
59
  end
@@ -1,6 +1,6 @@
1
1
  module Railjet
2
2
  module Repository
3
- class Registry
3
+ class Registry
4
4
  attr_reader :repositories, :initialized_repositories
5
5
  protected :repositories, :initialized_repositories
6
6
 
@@ -9,8 +9,8 @@ module Railjet
9
9
  @initialized_repositories = {}
10
10
  end
11
11
 
12
- def register(name, repository)
13
- add_to_registry(name, repository)
12
+ def register(name, repository, **kwargs)
13
+ add_to_registry(name, repository, **kwargs)
14
14
  define_accessor(name)
15
15
  end
16
16
 
@@ -27,6 +27,19 @@ module Railjet
27
27
  end
28
28
 
29
29
  private
30
+
31
+ class RegisteredRepository
32
+ attr_reader :repository, :additional_arguments
33
+
34
+ def initialize(repository, **kwargs)
35
+ @repository = repository
36
+ @additional_arguments = kwargs
37
+ end
38
+
39
+ def initialize_repo(registry)
40
+ repository.new(registry, **additional_arguments)
41
+ end
42
+ end
30
43
 
31
44
  def initialize_copy(original)
32
45
  super
@@ -36,9 +49,9 @@ module Railjet
36
49
  @registry_module = nil
37
50
  end
38
51
 
39
- def add_to_registry(name, repository)
52
+ def add_to_registry(name, repository, **kwargs)
40
53
  initialized_repositories[name] = nil
41
- repositories[name] = repository
54
+ repositories[name] = RegisteredRepository.new(repository, **kwargs)
42
55
  end
43
56
 
44
57
  def get_from_registry(name)
@@ -46,7 +59,7 @@ module Railjet
46
59
  end
47
60
 
48
61
  def initialize_repo(name)
49
- initialized_repositories[name] ||= get_from_registry(name).new(self)
62
+ initialized_repositories[name] ||= get_from_registry(name).initialize_repo(self)
50
63
  end
51
64
 
52
65
  def define_accessor(name)
@@ -1,3 +1,3 @@
1
1
  module Railjet
2
- VERSION = "2.0.pre"
2
+ VERSION = "2.0.pre1"
3
3
  end
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "gemfury"
27
27
  spec.add_development_dependency "rake-version", "~> 1.0"
28
28
 
29
- spec.add_dependency "activesupport", '> 4'
30
- spec.add_dependency "activemodel", '> 4'
29
+ spec.add_dependency "activesupport", '< 5'
30
+ spec.add_dependency "activemodel", '< 5'
31
31
  spec.add_dependency "virtus", "~> 1.0.2"
32
32
  spec.add_dependency "validates_timeliness", "~> 4.0.2"
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railjet
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.pre
4
+ version: 2.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Zalewski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-16 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,30 +98,30 @@ dependencies:
98
98
  name: activesupport
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">"
101
+ - - "<"
102
102
  - !ruby/object:Gem::Version
103
- version: '4'
103
+ version: '5'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">"
108
+ - - "<"
109
109
  - !ruby/object:Gem::Version
110
- version: '4'
110
+ version: '5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activemodel
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">"
115
+ - - "<"
116
116
  - !ruby/object:Gem::Version
117
- version: '4'
117
+ version: '5'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">"
122
+ - - "<"
123
123
  - !ruby/object:Gem::Version
124
- version: '4'
124
+ version: '5'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: virtus
127
127
  requirement: !ruby/object:Gem::Requirement