carioca 1.4 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +18 -0
  3. data/.gitignore +11 -0
  4. data/.rspec +3 -0
  5. data/Gemfile +6 -1
  6. data/Gemfile.lock +49 -0
  7. data/README.md +12 -220
  8. data/Rakefile +5 -66
  9. data/bin/console +15 -0
  10. data/bin/setup +8 -0
  11. data/carioca.gemspec +32 -23
  12. data/config/locales/en.yml +15 -0
  13. data/config/locales/fr.yml +19 -0
  14. data/lib/carioca/configuration.rb +47 -0
  15. data/lib/carioca/constants.rb +45 -0
  16. data/lib/carioca/container.rb +16 -0
  17. data/lib/carioca/dependencies.rb +19 -0
  18. data/lib/carioca/helpers.rb +44 -31
  19. data/lib/carioca/mixin.rb +32 -0
  20. data/lib/carioca/{tasks/rake.rb → rake/manage.rb} +2 -4
  21. data/lib/carioca/rake/tasks/registry.tasks +57 -0
  22. data/lib/carioca/registry.rb +93 -0
  23. data/lib/carioca/registry_file.rb +62 -0
  24. data/lib/carioca/services/config.rb +140 -0
  25. data/lib/carioca/services/i18n.rb +20 -0
  26. data/lib/carioca/services/init.rb +2 -0
  27. data/lib/carioca/validator.rb +49 -0
  28. data/lib/carioca.rb +2 -319
  29. data/samples/Rakefile +2 -0
  30. data/samples/config/carioca.registry +22 -0
  31. data/samples/config/locales/en.yml +2 -0
  32. data/samples/config/locales/es.yml +2 -0
  33. data/samples/config/locales/fr.yml +2 -0
  34. data/samples/config/settings.yml +24 -0
  35. data/samples/test.rb +71 -0
  36. metadata +46 -187
  37. data/AUTHORS +0 -8
  38. data/COPYRIGHT +0 -24
  39. data/ChangeLog +0 -10
  40. data/INSTALL +0 -7
  41. data/doc/manual.rdoc +0 -225
  42. data/lib/carioca/exceptions.rb +0 -9
  43. data/lib/carioca/private.rb +0 -168
  44. data/lib/carioca/services/configuration.rb +0 -203
  45. data/lib/carioca/services/debug.rb +0 -71
  46. data/lib/carioca/services/logger.rb +0 -58
  47. data/lib/carioca/services.rb +0 -143
  48. data/lib/carioca/tasks/registry_init.rake +0 -12
  49. data/spec/carioca_spec.rb +0 -468
  50. data/spec/config/.config +0 -14
  51. data/spec/config/services.registry +0 -55
  52. data/spec/init_spec.rb +0 -2
  53. data/spec/samples/dummy.rb +0 -11
  54. data/spec/samples/otherdummy.rb +0 -11
  55. data/spec/samples/requireddummy.rb +0 -11
  56. data/spec/spec_helper.rb +0 -18
  57. data/ultragreen_roodi_coding_convention.yml +0 -25
metadata CHANGED
@@ -1,233 +1,92 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carioca
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.4'
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Romain GEORGES
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-30 00:00:00.000000000 Z
11
+ date: 2022-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: tty-prompt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 13.0.1
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 13.0.1
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 3.9.0
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 3.9.0
41
- - !ruby/object:Gem::Dependency
42
- name: yard
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.9.24
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.9.24
55
- - !ruby/object:Gem::Dependency
56
- name: rdoc
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 6.2.1
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 6.2.1
69
- - !ruby/object:Gem::Dependency
70
- name: roodi
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 5.0.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 5.0.0
83
- - !ruby/object:Gem::Dependency
84
- name: code_statistics
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.2.13
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.2.13
97
- - !ruby/object:Gem::Dependency
98
- name: yard-rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.1'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.1'
111
- - !ruby/object:Gem::Dependency
112
- name: uuid
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 2.3.9
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 2.3.9
125
- - !ruby/object:Gem::Dependency
126
- name: dorsal
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.0'
19
+ version: 0.23.1
132
20
  type: :runtime
133
21
  prerelease: false
134
22
  version_requirements: !ruby/object:Gem::Requirement
135
23
  requirements:
136
24
  - - "~>"
137
25
  - !ruby/object:Gem::Version
138
- version: '1.0'
139
- - !ruby/object:Gem::Dependency
140
- name: methodic
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '1.3'
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- version: '1.3'
149
- type: :runtime
150
- prerelease: false
151
- version_requirements: !ruby/object:Gem::Requirement
152
- requirements:
153
- - - "~>"
154
- - !ruby/object:Gem::Version
155
- version: '1.3'
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '1.3'
159
- - !ruby/object:Gem::Dependency
160
- name: xml-simple
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: '1.1'
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- version: 1.1.5
169
- type: :runtime
170
- prerelease: false
171
- version_requirements: !ruby/object:Gem::Requirement
172
- requirements:
173
- - - "~>"
174
- - !ruby/object:Gem::Version
175
- version: '1.1'
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- version: 1.1.5
26
+ version: 0.23.1
179
27
  - !ruby/object:Gem::Dependency
180
- name: activesupport
28
+ name: pastel
181
29
  requirement: !ruby/object:Gem::Requirement
182
30
  requirements:
183
31
  - - "~>"
184
32
  - !ruby/object:Gem::Version
185
- version: 6.0.2.2
33
+ version: 0.8.0
186
34
  type: :runtime
187
35
  prerelease: false
188
36
  version_requirements: !ruby/object:Gem::Requirement
189
37
  requirements:
190
38
  - - "~>"
191
39
  - !ruby/object:Gem::Version
192
- version: 6.0.2.2
40
+ version: 0.8.0
193
41
  description: 'Carioca : provide a full IoC light Container for designing your applications'
194
- email: romain@ultragreen.net
42
+ email:
43
+ - romain@ultragreen.net
195
44
  executables: []
196
45
  extensions: []
197
46
  extra_rdoc_files: []
198
47
  files:
199
- - AUTHORS
200
- - COPYRIGHT
201
- - ChangeLog
48
+ - ".github/workflows/main.yml"
49
+ - ".gitignore"
50
+ - ".rspec"
202
51
  - Gemfile
203
- - INSTALL
52
+ - Gemfile.lock
204
53
  - README.md
205
54
  - Rakefile
55
+ - bin/console
56
+ - bin/setup
206
57
  - carioca.gemspec
207
- - doc/manual.rdoc
58
+ - config/locales/en.yml
59
+ - config/locales/fr.yml
208
60
  - lib/carioca.rb
209
- - lib/carioca/exceptions.rb
61
+ - lib/carioca/configuration.rb
62
+ - lib/carioca/constants.rb
63
+ - lib/carioca/container.rb
64
+ - lib/carioca/dependencies.rb
210
65
  - lib/carioca/helpers.rb
211
- - lib/carioca/private.rb
212
- - lib/carioca/services.rb
213
- - lib/carioca/services/configuration.rb
214
- - lib/carioca/services/debug.rb
215
- - lib/carioca/services/logger.rb
216
- - lib/carioca/tasks/rake.rb
217
- - lib/carioca/tasks/registry_init.rake
218
- - spec/carioca_spec.rb
219
- - spec/config/.config
220
- - spec/config/services.registry
221
- - spec/init_spec.rb
222
- - spec/samples/dummy.rb
223
- - spec/samples/otherdummy.rb
224
- - spec/samples/requireddummy.rb
225
- - spec/spec_helper.rb
226
- - ultragreen_roodi_coding_convention.yml
66
+ - lib/carioca/mixin.rb
67
+ - lib/carioca/rake/manage.rb
68
+ - lib/carioca/rake/tasks/registry.tasks
69
+ - lib/carioca/registry.rb
70
+ - lib/carioca/registry_file.rb
71
+ - lib/carioca/services/config.rb
72
+ - lib/carioca/services/i18n.rb
73
+ - lib/carioca/services/init.rb
74
+ - lib/carioca/validator.rb
75
+ - samples/Rakefile
76
+ - samples/config/carioca.registry
77
+ - samples/config/locales/en.yml
78
+ - samples/config/locales/es.yml
79
+ - samples/config/locales/fr.yml
80
+ - samples/config/settings.yml
81
+ - samples/test.rb
227
82
  homepage: https://github.com/Ultragreen/carioca
228
83
  licenses:
229
- - BSD-2-Clause
230
- metadata: {}
84
+ - BSD-3-Clause
85
+ metadata:
86
+ allowed_push_host: https://rubygems.org
87
+ homepage_uri: https://github.com/Ultragreen/carioca
88
+ source_code_uri: https://github.com/Ultragreen/carioca
89
+ changelog_uri: https://github.com/Ultragreen/carioca
231
90
  post_install_message:
232
91
  rdoc_options: []
233
92
  require_paths:
@@ -236,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
95
  requirements:
237
96
  - - ">="
238
97
  - !ruby/object:Gem::Version
239
- version: 1.8.1
98
+ version: 2.3.0
240
99
  required_rubygems_version: !ruby/object:Gem::Requirement
241
100
  requirements:
242
101
  - - ">="
data/AUTHORS DELETED
@@ -1,8 +0,0 @@
1
- Author :
2
- Romain GEORGES <romain@ultragreen.net>
3
- - code
4
- - inline documentation
5
- - specs
6
- - Documentation
7
- Ruby Gem maintener :
8
- Romain GEORGES <romain@ultragreen.net>
data/COPYRIGHT DELETED
@@ -1,24 +0,0 @@
1
- carioca Copyright (c) 2013 Ultragreen Software, Romain GEORGES
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions
6
- are met:
7
- 1. Redistributions of source code must retain the above copyright
8
- notice, this list of conditions and the following disclaimer.
9
- 2. Redistributions in binary form must reproduce the above copyright
10
- notice, this list of conditions and the following disclaimer in the
11
- documentation and/or other materials provided with the distribution.
12
-
13
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23
- SUCH DAMAGE.
24
-
data/ChangeLog DELETED
@@ -1,10 +0,0 @@
1
- carioca :
2
- - initial dev. version
3
- - version 0.1 (unstable)
4
- Romain GEORGES
5
- - initial stable version
6
- - version 1.0 (stable)
7
- Romain GEORGES
8
-
9
- - current stable version
10
- - version 1.4 (stable) 2020/04/30
data/INSTALL DELETED
@@ -1,7 +0,0 @@
1
- How to install carioca ?
2
- =========================
3
-
4
- Please install the gem version via RubyGems :
5
-
6
- $ su -
7
- # gem ins carioca
data/doc/manual.rdoc DELETED
@@ -1,225 +0,0 @@
1
- = Carioca
2
-
3
- == Content
4
-
5
- Author:: Romain GEORGES <romain@ultragreen.net>
6
- Version:: 1.0
7
- WWW:: http://www.ultragreen.net/projects/carioca
8
-
9
- == Description
10
-
11
- CARIOCA is Configuration Agent and Registry with Inversion Of Control for your Applications
12
- Carioca provide a full IoC light Container for designing your applications
13
- Carioca provide :
14
- - a complete Configuration Agent
15
- - A service Registry (base on IOC/DI pattern)
16
-
17
-
18
- == Installation
19
-
20
- In a valid Ruby environment :
21
-
22
- $ sudo zsh
23
- # gem ins carioca
24
-
25
- == Implementation
26
-
27
- * [Carioca]
28
- * [Carioca::Services]
29
- * [Carioca:Services::Registry]
30
-
31
- == Utilisation
32
-
33
- Carioca may be used to create Ruby applications, based on a service registry
34
- Carioca come with somes builtin services :
35
- * logger : an Internal logger based on the logger gem.
36
- * Configuration : a Configuration Service, with Yaml percistance, and pretty accessors.
37
- * Debug : a Class Debugger, based on Proxy Design pattern and meta-programation like method_missing
38
-
39
-
40
- === Getting start
41
-
42
- ==== Preparing Gem
43
-
44
- Just after Installation, Carioca :
45
-
46
- $ gem ins bundler # if needed
47
- $ bunlde gem myapp
48
- $ cd myapp
49
-
50
-
51
- Edit your myapp.gemspec, add this line in Gem::Specification bloc :
52
-
53
- gem.add_dependency 'carioca'
54
- gem.add_development_dependency 'rake'
55
- gem.add_development_dependency 'carioca'
56
-
57
- Description and summary need to be changed to be correctly displayed on Rubygems.
58
-
59
- so, execute bundle :
60
-
61
- $ bundle
62
-
63
- Your environment, is ready to create your app
64
-
65
- ==== Prepare Carioca
66
-
67
-
68
- $ mkdir config
69
- $ mkdir bin
70
-
71
- edit bin/myapp :
72
-
73
- require 'rubygems'
74
- require 'carioca'
75
-
76
- registry = Carioca::Services::Registry.init :file => 'config/myservices.registry'
77
-
78
-
79
-
80
- After, you could Run Carioca and discover Builtins Services, you need the write access to config path
81
-
82
-
83
-
84
- $ ruby -e 'require "rubygems"; require "carioca"; reg = Carioca::Services::Registry.init :file => "config/myservices.registry"; reg.discover_builtins; reg.save!'
85
-
86
-
87
-
88
- this create you, a New Registry config, with all builtins registered.
89
- Default path :
90
- * config file : ./.config
91
- * log file : /tmp/log.file
92
- Carioca Registry is a Singleton, and services also be unique instance.
93
-
94
- Now you could continue coding your bin/myapp
95
-
96
- ==== Using Configuration Service
97
-
98
-
99
- require 'rubygems'
100
- require 'carioca'
101
-
102
- registry = Carioca::Services::Registry.init :file => 'config/myservices.registry'
103
- config = registry.start_service :name => 'configuration'
104
- config.setings.db = { :name => 'mydb' }
105
- config.settings.db.host = "myhost"
106
- config.settings.db.port = "4545"
107
- config.settings.email = "my@email.com"
108
- config.save!
109
-
110
-
111
- ==== Using Logger Service
112
-
113
- logger is automatically loaded with Carioca, loading registry with :debug => true, let you see the Carioca traces.
114
-
115
-
116
- require 'rubygems'
117
- require 'carioca'
118
-
119
- registry = Carioca::Services::Registry.init :file => 'config/myservices.registry' :debug => true
120
- log = registry.get_service :name => 'logger'
121
- log.info('myapp') {'my message' }
122
-
123
-
124
- ==== Creating and using your own service
125
-
126
- before create your own service :
127
-
128
-
129
- $ mkdir services
130
-
131
-
132
- Services, must be a class, if not do a wrapper
133
- edit services/myservice.rb
134
-
135
- class MyService
136
- def initialize
137
- end
138
-
139
- def test(arg = nil)
140
- return 'OK'
141
- end
142
- end
143
- end
144
-
145
-
146
- You could use the #service_register API (See spec for all details)
147
- but, you could write it directly in YAML in your config/myservices.registry :
148
- add the following lines :
149
-
150
- ...
151
- myservice:
152
- :type: :file
153
- :resource: services/myservice.rb
154
- :description: a test service
155
- :service: MyServices
156
- ...
157
-
158
- So in your app :
159
-
160
-
161
- require 'rubygems'
162
- require 'carioca'
163
-
164
- registry = Carioca::Services::Registry.init :file => 'config/myservices.registry'
165
- service = registry.start_service :name => 'myservice'
166
- service.test('titi')
167
-
168
-
169
-
170
- ==== Using Debug in multiple service instance
171
-
172
-
173
- in your app, for debug you could use the Proxy Debug (you need to run Carioca Registry in debug mode ) :
174
- (Using "debug_", you create an instance of service debug, so with this syntaxe you could create multiple services instances, with different parameters calling.)
175
-
176
-
177
- require 'rubygems'
178
- require 'carioca'
179
-
180
- registry = Carioca::Services::Registry.init :file => 'config/myservices.registry' :debug => true
181
- proxy1 = registry.get_service :name => 'debug_myservice', :params => {:service => 'myservice'}
182
- proxy1.test('titi')
183
-
184
-
185
-
186
- see the log /tmp/log.file :
187
-
188
-
189
- D, [2013-03-23T18:20:39.839826 #76641] DEBUG -- ProxyDebug: BEGIN CALL for mapped service myservice
190
- D, [2013-03-23T18:20:39.839875 #76641] DEBUG -- ProxyDebug: called: test
191
- D, [2013-03-23T18:20:39.839920 #76641] DEBUG -- ProxyDebug: args : titi
192
- D, [2013-03-23T18:20:39.839970 #76641] DEBUG -- ProxyDebug: => returned: OK
193
- D, [2013-03-23T18:20:39.840014 #76641] DEBUG -- ProxyDebug: END CALL
194
-
195
- ==== Using Gem for a service
196
-
197
-
198
- For exemple install uuid gem :
199
-
200
- $ gem ins uuid
201
-
202
-
203
- add to your YAML config config/myservices.registry :
204
-
205
- uuid:
206
- :type: :gem
207
- :resource: uuid
208
- :description: a Rubygems called uuid to build UUID ids.
209
- :service: UUID
210
-
211
-
212
- in your app :
213
-
214
- require 'rubygems'
215
- require 'carioca'
216
-
217
- registry = Carioca::Services::Registry.init :file => 'config/myservices.registry' :debug => true
218
- uuid = registry.get_service :name => 'uuid'
219
- uuid.generate
220
-
221
-
222
- == Copyright
223
-
224
- <pre>carioca (c) 2012-2013 Romain GEORGES <romain@ultragreen.net> for Ultragreen Software </pre>
225
-
@@ -1,9 +0,0 @@
1
- # coding: utf-8
2
- #---
3
- # Author : Romain GEORGES
4
- # type : gem component library
5
- # obj : Carioca Exceptions definition Module
6
- #---
7
-
8
- # Exception overload class for Carioca
9
- class RegistryError < Exception; end