railjet 2.0.pre → 2.0.pre1

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