patriarch 0.0.3 → 0.0.4
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.
- data/.gitignore +1 -1
- data/Gemfile +2 -0
- data/lib/generators/patriarch/install_generator.rb +11 -0
- data/lib/generators/patriarch/patriarch_generator.rb +95 -50
- data/lib/generators/patriarch/templates/empty_behaviours_declaration.rb +5 -0
- data/lib/generators/patriarch/templates/empty_services_declaration.rb +5 -0
- data/lib/patriarch/dao_services/bipartite_relationship_builder_service.rb +2 -0
- data/lib/patriarch/dao_services/retriever_service.rb +2 -0
- data/lib/patriarch/tool_services/redis_extractor_service.rb +1 -2
- data/lib/patriarch/version.rb +1 -1
- data/lib/patriarch.rb +3 -0
- data/patriarch.gemspec +0 -2
- metadata +19 -38
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
desc "Installs the gem"
|
7
|
+
|
8
|
+
def init_directories
|
9
|
+
copy_file "empty_behaviours_declaration.rb", "lib/patriarch/behaviours.rb"
|
10
|
+
end
|
11
|
+
end # InstallGenerator
|
@@ -1,69 +1,114 @@
|
|
1
1
|
require "rails/generators"
|
2
|
+
require "redis/objects/sorted_sets"
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
class PatriarchGenerator < Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
desc "Generate files needed to implement the BEHAVIOUR you specified. Don't forget to add declarations into models"
|
7
8
|
|
8
|
-
|
9
|
+
argument :behaviour, :type => :string
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
public
|
12
|
+
def init_directories
|
13
|
+
empty_directory "lib/patriarch/services/#{behaviour.underscore.downcase}"
|
14
|
+
empty_directory "lib/patriarch/services/#{Patriarch.undo(behaviour.underscore.downcase)}"
|
15
|
+
template "empty_behaviour_module.rb", "lib/patriarch/behaviours/#{behaviour.underscore.downcase}.rb"
|
16
|
+
template "empty_service_module.rb", "lib/patriarch/services/#{behaviour.underscore.downcase}.rb"
|
17
|
+
template "tools_methods.rb", "lib/patriarch/behaviours/#{behaviour.underscore.downcase}/tools_methods.rb"
|
18
|
+
end
|
19
|
+
|
20
|
+
def ensure_autoload
|
21
|
+
|
22
|
+
puts destination_root
|
23
|
+
|
24
|
+
# Copy empty declaration if it does not exists so we can insert autoload declaration
|
25
|
+
unless File.exists? [File.expand_path(destination_root),"lib/patriarch/behaviours.rb"].join('/')
|
26
|
+
copy_file "empty_behaviours_declaration.rb", "lib/patriarch/behaviours.rb"
|
17
27
|
end
|
18
28
|
|
19
|
-
|
20
|
-
|
21
|
-
# implémenter un switch ici, plus zoli ...
|
22
|
-
self.class.send(:define_method,:class_name) do
|
23
|
-
Patriarch.undo(behaviour).classify
|
24
|
-
end
|
25
|
-
create_undo_services(behaviour)
|
29
|
+
unless File.exists? "lib/patriarch/services.rb"
|
30
|
+
copy_file "empty_services_declaration.rb", "lib/patriarch/services.rb"
|
26
31
|
end
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
33
|
+
# Autoload declaration insertion
|
34
|
+
insert_into_file "lib/patriarch/services.rb", :after => " module Services\n" do
|
35
|
+
" autoload :#{class_name}, 'patriarch/services/#{behaviour.underscore.downcase}.rb'\n"
|
36
|
+
end
|
32
37
|
|
33
|
-
|
34
|
-
|
35
|
-
|
38
|
+
insert_into_file "lib/patriarch/services.rb", :after => " module Services\n" do
|
39
|
+
" autoload :#{undo_class_name}, 'patriarch/services/#{behaviour.underscore.downcase}.rb'\n"
|
40
|
+
end
|
36
41
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
template "before_manager_service.rb", "lib/patriarch/services/#{behaviour_str}/before_manager_service.rb"
|
42
|
-
template "before_service.rb", "lib/patriarch/services/#{behaviour_str}/before_service.rb"
|
42
|
+
# Autoload declaration insertion
|
43
|
+
insert_into_file "lib/patriarch/behaviours.rb", :after => " module Behaviours\n" do
|
44
|
+
" autoload :#{class_name}, 'patriarch/behaviours/#{behaviour.underscore.downcase}.rb'\n"
|
45
|
+
end
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
+
insert_into_file "lib/patriarch/behaviours.rb", :after => " module Behaviours\n" do
|
48
|
+
" autoload :#{undo_class_name}, 'patriarch/behaviours/#{Patriarch.undo(behaviour.underscore.downcase)}.rb'\n"
|
49
|
+
end
|
47
50
|
|
51
|
+
# load File.expand_path('lib/patriarch/behaviours.rb', __FILE__)
|
52
|
+
end
|
48
53
|
|
49
|
-
|
50
|
-
|
54
|
+
def build_initializer
|
55
|
+
unless File.exists? "config/initializers/patriarch.rb"
|
56
|
+
create_file "config/initializers/patriarch.rb" do
|
57
|
+
"require 'patriarch'\n\n"+
|
58
|
+
"load File.expand_path('../../../lib/patriarch/behaviours.rb', __FILE__)\n" +
|
59
|
+
"load File.expand_path('../../../lib/patriarch/services.rb', __FILE__)"
|
51
60
|
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def generate_services
|
65
|
+
create_services(behaviour)
|
66
|
+
# implémenter un switch ici, plus zoli ...
|
67
|
+
self.class.send(:define_method,:class_name) do
|
68
|
+
Patriarch.undo(behaviour).classify
|
69
|
+
end
|
70
|
+
create_undo_services(behaviour)
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
def class_name
|
75
|
+
behaviour.classify
|
76
|
+
end
|
52
77
|
|
53
|
-
|
54
|
-
|
78
|
+
def undo_class_name
|
79
|
+
Patriarch.undo(behaviour).classify
|
80
|
+
end
|
55
81
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
82
|
+
def create_services(behaviour)
|
83
|
+
behaviour_str = behaviour.underscore.downcase
|
84
|
+
template "authorization_service.rb", "lib/patriarch/services/#{behaviour_str}/authorization_service.rb"
|
85
|
+
|
86
|
+
template "before_manager_service.rb", "lib/patriarch/services/#{behaviour_str}/before_manager_service.rb"
|
87
|
+
template "before_service.rb", "lib/patriarch/services/#{behaviour_str}/before_service.rb"
|
60
88
|
|
61
|
-
|
62
|
-
|
63
|
-
|
89
|
+
template "manager_service.rb", "lib/patriarch/services/#{behaviour_str}/manager_service.rb"
|
90
|
+
|
91
|
+
template "service.rb", "lib/patriarch/services/#{behaviour_str}/service.rb"
|
64
92
|
|
65
|
-
template "after_manager_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/after_manager_service.rb"
|
66
|
-
template "after_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/after_service.rb"
|
67
|
-
end
|
68
93
|
|
69
|
-
|
94
|
+
template "after_manager_service.rb", "lib/patriarch/services/#{behaviour_str}/after_manager_service.rb"
|
95
|
+
template "after_service.rb", "lib/patriarch/services/#{behaviour_str}/after_service.rb"
|
96
|
+
end
|
97
|
+
|
98
|
+
def create_undo_services(behaviour)
|
99
|
+
undo_behaviour_str = Patriarch.undo(behaviour).underscore.downcase
|
100
|
+
|
101
|
+
template "authorization_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/authorization_service.rb"
|
102
|
+
|
103
|
+
template "before_manager_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/before_manager_service.rb"
|
104
|
+
template "before_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/before_service.rb"
|
105
|
+
|
106
|
+
template "manager_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/manager_service.rb"
|
107
|
+
|
108
|
+
template "undo_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/service.rb"
|
109
|
+
|
110
|
+
template "after_manager_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/after_manager_service.rb"
|
111
|
+
template "after_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/after_service.rb"
|
112
|
+
end
|
113
|
+
|
114
|
+
end # PatriarchGenerator
|
@@ -9,12 +9,11 @@ class Patriarch::ToolServices::RedisExtractorService < Patriarch::Service
|
|
9
9
|
to = from + limit -1
|
10
10
|
end
|
11
11
|
|
12
|
-
dao = Redis::SortedSet.new("#{calling_entity.class.name.
|
12
|
+
dao = Redis::SortedSet.new("#{calling_entity.class.name.underscore}:#{calling_entity.id}:#{redis_key}")
|
13
13
|
|
14
14
|
if options[:with_scores]
|
15
15
|
# Do not use this anymore, go take the right redis objects not using this kind of methods ...
|
16
16
|
# DEGOLASSE
|
17
|
-
Redis::SortedSet.new
|
18
17
|
ids_with_scores_from_redis = dao.revrange(from,to,:with_scores => true) || []
|
19
18
|
ids_with_scores_from_redis.map{ |id,score| [id.to_i,score] }
|
20
19
|
else
|
data/lib/patriarch/version.rb
CHANGED
data/lib/patriarch.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "patriarch/version"
|
2
2
|
require "redis"
|
3
3
|
require "redis/objects"
|
4
|
+
require "redis/objects/sorted_sets"
|
4
5
|
require "rails/generators"
|
5
6
|
|
6
7
|
|
@@ -36,3 +37,5 @@ module Patriarch
|
|
36
37
|
end
|
37
38
|
|
38
39
|
end # Patriarch
|
40
|
+
|
41
|
+
require File.expand_path('../patriarch/behaviours',__FILE__)
|
data/patriarch.gemspec
CHANGED
@@ -13,11 +13,9 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.post_install_message = "Thanks for installing!"
|
14
14
|
|
15
15
|
# Main dependencies
|
16
|
-
spec.add_dependency "redis-objects"
|
17
16
|
spec.add_runtime_dependency "verbs"
|
18
17
|
spec.add_runtime_dependency "rails"
|
19
18
|
spec.add_runtime_dependency "railties"
|
20
|
-
spec.add_runtime_dependency "redis-objects"
|
21
19
|
|
22
20
|
# Dependencies needed for testing
|
23
21
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: patriarch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: redis-objects
|
16
|
-
requirement: &12695180 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *12695180
|
25
14
|
- !ruby/object:Gem::Dependency
|
26
15
|
name: verbs
|
27
|
-
requirement: &
|
16
|
+
requirement: &14218700 !ruby/object:Gem::Requirement
|
28
17
|
none: false
|
29
18
|
requirements:
|
30
19
|
- - ! '>='
|
@@ -32,10 +21,10 @@ dependencies:
|
|
32
21
|
version: '0'
|
33
22
|
type: :runtime
|
34
23
|
prerelease: false
|
35
|
-
version_requirements: *
|
24
|
+
version_requirements: *14218700
|
36
25
|
- !ruby/object:Gem::Dependency
|
37
26
|
name: rails
|
38
|
-
requirement: &
|
27
|
+
requirement: &14218280 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
29
|
requirements:
|
41
30
|
- - ! '>='
|
@@ -43,21 +32,10 @@ dependencies:
|
|
43
32
|
version: '0'
|
44
33
|
type: :runtime
|
45
34
|
prerelease: false
|
46
|
-
version_requirements: *
|
35
|
+
version_requirements: *14218280
|
47
36
|
- !ruby/object:Gem::Dependency
|
48
37
|
name: railties
|
49
|
-
requirement: &
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *12693800
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: redis-objects
|
60
|
-
requirement: &12693300 !ruby/object:Gem::Requirement
|
38
|
+
requirement: &14192480 !ruby/object:Gem::Requirement
|
61
39
|
none: false
|
62
40
|
requirements:
|
63
41
|
- - ! '>='
|
@@ -65,10 +43,10 @@ dependencies:
|
|
65
43
|
version: '0'
|
66
44
|
type: :runtime
|
67
45
|
prerelease: false
|
68
|
-
version_requirements: *
|
46
|
+
version_requirements: *14192480
|
69
47
|
- !ruby/object:Gem::Dependency
|
70
48
|
name: rspec
|
71
|
-
requirement: &
|
49
|
+
requirement: &14192060 !ruby/object:Gem::Requirement
|
72
50
|
none: false
|
73
51
|
requirements:
|
74
52
|
- - ! '>='
|
@@ -76,10 +54,10 @@ dependencies:
|
|
76
54
|
version: '0'
|
77
55
|
type: :development
|
78
56
|
prerelease: false
|
79
|
-
version_requirements: *
|
57
|
+
version_requirements: *14192060
|
80
58
|
- !ruby/object:Gem::Dependency
|
81
59
|
name: fakeredis
|
82
|
-
requirement: &
|
60
|
+
requirement: &14191640 !ruby/object:Gem::Requirement
|
83
61
|
none: false
|
84
62
|
requirements:
|
85
63
|
- - ! '>='
|
@@ -87,10 +65,10 @@ dependencies:
|
|
87
65
|
version: '0'
|
88
66
|
type: :development
|
89
67
|
prerelease: false
|
90
|
-
version_requirements: *
|
68
|
+
version_requirements: *14191640
|
91
69
|
- !ruby/object:Gem::Dependency
|
92
70
|
name: autotest-rails
|
93
|
-
requirement: &
|
71
|
+
requirement: &14191220 !ruby/object:Gem::Requirement
|
94
72
|
none: false
|
95
73
|
requirements:
|
96
74
|
- - ! '>='
|
@@ -98,10 +76,10 @@ dependencies:
|
|
98
76
|
version: '0'
|
99
77
|
type: :development
|
100
78
|
prerelease: false
|
101
|
-
version_requirements: *
|
79
|
+
version_requirements: *14191220
|
102
80
|
- !ruby/object:Gem::Dependency
|
103
81
|
name: ZenTest
|
104
|
-
requirement: &
|
82
|
+
requirement: &14190800 !ruby/object:Gem::Requirement
|
105
83
|
none: false
|
106
84
|
requirements:
|
107
85
|
- - ! '>='
|
@@ -109,7 +87,7 @@ dependencies:
|
|
109
87
|
version: '0'
|
110
88
|
type: :development
|
111
89
|
prerelease: false
|
112
|
-
version_requirements: *
|
90
|
+
version_requirements: *14190800
|
113
91
|
description: Patriach is about adding behaviours on the fly to good old active record
|
114
92
|
models.
|
115
93
|
email:
|
@@ -124,6 +102,7 @@ files:
|
|
124
102
|
- README.md
|
125
103
|
- Rakefile
|
126
104
|
- lib/generators/patriarch/USAGE
|
105
|
+
- lib/generators/patriarch/install_generator.rb
|
127
106
|
- lib/generators/patriarch/patriarch_generator.rb
|
128
107
|
- lib/generators/patriarch/templates/after_manager_service.rb
|
129
108
|
- lib/generators/patriarch/templates/after_service.rb
|
@@ -131,7 +110,9 @@ files:
|
|
131
110
|
- lib/generators/patriarch/templates/before_manager_service.rb
|
132
111
|
- lib/generators/patriarch/templates/before_service.rb
|
133
112
|
- lib/generators/patriarch/templates/empty_behaviour_module.rb
|
113
|
+
- lib/generators/patriarch/templates/empty_behaviours_declaration.rb
|
134
114
|
- lib/generators/patriarch/templates/empty_service_module.rb
|
115
|
+
- lib/generators/patriarch/templates/empty_services_declaration.rb
|
135
116
|
- lib/generators/patriarch/templates/manager_service.rb
|
136
117
|
- lib/generators/patriarch/templates/service.rb
|
137
118
|
- lib/generators/patriarch/templates/tools_methods.rb
|