mimi-core 0.2.0 → 1.0.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 +4 -4
- data/.yardopts +1 -0
- data/README.md +199 -2
- data/lib/mimi/core/core_ext.rb +89 -2
- data/lib/mimi/core/inheritable_property.rb +173 -0
- data/lib/mimi/core/manifest.rb +538 -0
- data/lib/mimi/core/module.rb +80 -16
- data/lib/mimi/core/rake.rb +46 -0
- data/lib/mimi/core/version.rb +1 -1
- data/lib/mimi/core.rb +32 -2
- data/mimi-core.gemspec +1 -2
- metadata +8 -19
data/lib/mimi/core/rake.rb
CHANGED
@@ -1,7 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# When required, `mimi/core/rake` loads all rake tasks exported by *loaded* modules
|
4
|
+
# and current application (found under `app_root_path`).
|
5
|
+
#
|
6
|
+
# Usage:
|
7
|
+
#
|
8
|
+
# ```ruby
|
9
|
+
# # lib/my_app.rb
|
10
|
+
# require 'mimi/core'
|
11
|
+
# require 'mimi/db'
|
12
|
+
#
|
13
|
+
#
|
14
|
+
# # lib/tasks/my_task.rake
|
15
|
+
# desc 'My application task'
|
16
|
+
# task :my_task do
|
17
|
+
# puts
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
#
|
21
|
+
# # Rakefile
|
22
|
+
# require_relative 'lib/my_app'
|
23
|
+
# require 'mimi/core/rake'
|
24
|
+
# ```
|
25
|
+
#
|
26
|
+
# This makes rake tasks exported by `mimi-db` and other loaded modules available:
|
27
|
+
#
|
28
|
+
# ```ruby
|
29
|
+
# $ rake -T
|
30
|
+
# rake db:clear # Clear database
|
31
|
+
# rake db:config # Show database config
|
32
|
+
# rake db:create # Create database
|
33
|
+
# ...
|
34
|
+
# rake my_task # My application task
|
35
|
+
# ```
|
36
|
+
#
|
37
|
+
#
|
1
38
|
module Mimi
|
2
39
|
module Core
|
40
|
+
#
|
41
|
+
# Mimi::Core::Rake module contains various rake helpers
|
42
|
+
#
|
3
43
|
module Rake
|
44
|
+
#
|
45
|
+
# Loads rake tasks exported by *loaded* modules
|
46
|
+
#
|
4
47
|
def self.load_rake_tasks
|
48
|
+
unless Mimi.respond_to?(:app_root_path)
|
49
|
+
raise 'Cannot load rake tasks before mimi-core module is loaded'
|
50
|
+
end
|
5
51
|
app_and_modules_paths = [Mimi.app_root_path] + Mimi.loaded_modules_paths
|
6
52
|
rakefiles = app_and_modules_paths.map do |path|
|
7
53
|
Pathname.glob(path.join('lib', 'tasks', '**', '*.rake'))
|
data/lib/mimi/core/version.rb
CHANGED
data/lib/mimi/core.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
|
3
5
|
module Mimi
|
6
|
+
#
|
7
|
+
# `Mimi::Core` extends the `Mimi` namespace with its instance methods.
|
8
|
+
#
|
4
9
|
module Core
|
5
10
|
# Returns the application's root path.
|
6
11
|
#
|
@@ -8,12 +13,17 @@ module Mimi
|
|
8
13
|
# If you need to use a different path as the app root path,
|
9
14
|
# use #app_root_path=()
|
10
15
|
#
|
16
|
+
# @return [Pathname]
|
17
|
+
#
|
11
18
|
def app_root_path
|
12
19
|
@app_root_path ||= Pathname.pwd.expand_path
|
13
20
|
end
|
14
21
|
|
15
22
|
# Sets the application's root path explicitly
|
16
23
|
#
|
24
|
+
# @param path [String,Pathname]
|
25
|
+
# @return [Pathname]
|
26
|
+
#
|
17
27
|
def app_root_path=(path)
|
18
28
|
@app_root_path = Pathname.new(path).expand_path
|
19
29
|
end
|
@@ -24,12 +34,21 @@ module Mimi
|
|
24
34
|
# Mimi.app_root_path # => /path/to/my_app
|
25
35
|
# Mimi.app_path_to('app', 'models') # => /path/to/my_app/app/models
|
26
36
|
#
|
37
|
+
# @param args [Array<String,Pathname>]
|
38
|
+
# @return [Pathname]
|
39
|
+
#
|
27
40
|
def app_path_to(*args)
|
28
41
|
app_root_path.join(*args)
|
29
42
|
end
|
30
43
|
|
31
44
|
# Use the given module
|
32
45
|
#
|
46
|
+
# Includes the module in the list of *used* Mimi modules. Used modules are automatically
|
47
|
+
# started/stopped when Mimi.start is performed, in the order of appending.
|
48
|
+
#
|
49
|
+
# @param mod [Module]
|
50
|
+
# @param opts [Hash,nil] optional parameters to be passed to the module's .configure method
|
51
|
+
#
|
33
52
|
def use(mod, opts = {})
|
34
53
|
raise ArgumentError, "#{mod} is not a Mimi module" unless mod < Mimi::Core::Module
|
35
54
|
mod.configure(opts)
|
@@ -37,7 +56,9 @@ module Mimi
|
|
37
56
|
true
|
38
57
|
end
|
39
58
|
|
40
|
-
# Returns the list of loaded (require
|
59
|
+
# Returns the list of loaded (require'd) modules
|
60
|
+
#
|
61
|
+
# @return [Array<Module>]
|
41
62
|
#
|
42
63
|
def loaded_modules
|
43
64
|
@loaded_modules ||= []
|
@@ -45,18 +66,25 @@ module Mimi
|
|
45
66
|
|
46
67
|
# Returns the list of used modules
|
47
68
|
#
|
69
|
+
# @return [Array<Module>]
|
70
|
+
#
|
48
71
|
def used_modules
|
49
72
|
@used_modules ||= []
|
50
73
|
end
|
51
74
|
|
52
75
|
# Returns all loaded module paths, which are defined (non nil)
|
53
76
|
#
|
77
|
+
# @return [Array<Pathname>]
|
78
|
+
#
|
54
79
|
def loaded_modules_paths
|
55
80
|
loaded_modules.map(&:module_path).reject(&:nil?)
|
56
81
|
end
|
57
82
|
|
58
83
|
# Requires all files that match the glob.
|
59
84
|
#
|
85
|
+
# @param glob [String]
|
86
|
+
# @param root_path [Pathname,nil] if not specified, app_root_path will be used
|
87
|
+
#
|
60
88
|
def require_files(glob, root_path = app_root_path)
|
61
89
|
Pathname.glob(root_path.join(glob)).each do |filename|
|
62
90
|
require filename.expand_path
|
@@ -81,5 +109,7 @@ module Mimi
|
|
81
109
|
end # module Mimi
|
82
110
|
|
83
111
|
require_relative 'core/version'
|
84
|
-
require_relative 'core/module'
|
85
112
|
require_relative 'core/core_ext'
|
113
|
+
require_relative 'core/inheritable_property'
|
114
|
+
require_relative 'core/module'
|
115
|
+
require_relative 'core/manifest'
|
data/mimi-core.gemspec
CHANGED
@@ -27,8 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.add_dependency '
|
31
|
-
spec.add_dependency 'hashie', '~> 3.4'
|
30
|
+
spec.add_dependency 'hashie', '~> 3.6'
|
32
31
|
|
33
32
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
34
33
|
spec.add_development_dependency 'pry', '~> 0.10'
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mimi-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activesupport
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '5.0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '5.0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: hashie
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
17
|
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '3.
|
19
|
+
version: '3.6'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '3.
|
26
|
+
version: '3.6'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bundler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,6 +90,7 @@ files:
|
|
104
90
|
- ".gitignore"
|
105
91
|
- ".rspec"
|
106
92
|
- ".travis.yml"
|
93
|
+
- ".yardopts"
|
107
94
|
- CODE_OF_CONDUCT.md
|
108
95
|
- Gemfile
|
109
96
|
- LICENSE.txt
|
@@ -113,6 +100,8 @@ files:
|
|
113
100
|
- bin/setup
|
114
101
|
- lib/mimi/core.rb
|
115
102
|
- lib/mimi/core/core_ext.rb
|
103
|
+
- lib/mimi/core/inheritable_property.rb
|
104
|
+
- lib/mimi/core/manifest.rb
|
116
105
|
- lib/mimi/core/module.rb
|
117
106
|
- lib/mimi/core/rake.rb
|
118
107
|
- lib/mimi/core/version.rb
|
@@ -138,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
127
|
version: '0'
|
139
128
|
requirements: []
|
140
129
|
rubyforge_project:
|
141
|
-
rubygems_version: 2.
|
130
|
+
rubygems_version: 2.6.14.4
|
142
131
|
signing_key:
|
143
132
|
specification_version: 4
|
144
133
|
summary: Core module for mimi, microframework for microservices
|