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 CHANGED
@@ -1,4 +1,4 @@
1
- spec/dummy/lib
1
+ spec/dummy
2
2
  *.gem
3
3
  *.rbc
4
4
  *.swp
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'redis-objects', :require => 'redis/objects'
4
+
3
5
  # Specify your gem's dependencies in patriarch.gemspec
4
6
  gemspec
@@ -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
- class PatriarchGenerator < Rails::Generators::Base
4
- source_root File.expand_path('../templates', __FILE__)
5
-
6
- desc "Generate files needed to implement the BEHAVIOUR you specified. Don't forget to add declarations into models"
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
- argument :behaviour, :type => :string
9
+ argument :behaviour, :type => :string
9
10
 
10
- public
11
- def init_directories
12
- empty_directory "lib/patriarch/services/#{behaviour.underscore.downcase}"
13
- empty_directory "lib/patriarch/services/#{Patriarch.undo(behaviour.underscore.downcase)}"
14
- template "empty_behaviour_module.rb", "lib/patriarch/behaviours/#{behaviour.underscore.downcase}.rb"
15
- template "empty_service_module.rb", "lib/patriarch/services/#{behaviour.underscore.downcase}.rb"
16
- template "tools_methods.rb", "lib/patriarch/behaviours/#{behaviour.underscore.downcase}/tools_methods.rb"
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
- def generate_services
20
- create_services(behaviour)
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
- private
29
- def class_name
30
- behaviour.classify
31
- end
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
- def undo_class_name
34
- Patriarch.undo(behaviour).classify
35
- end
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
- def create_services(behaviour)
38
- behaviour_str = behaviour.underscore.downcase
39
- template "authorization_service.rb", "lib/patriarch/services/#{behaviour_str}/authorization_service.rb"
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
- template "manager_service.rb", "lib/patriarch/services/#{behaviour_str}/manager_service.rb"
45
-
46
- template "service.rb", "lib/patriarch/services/#{behaviour_str}/service.rb"
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
- template "after_manager_service.rb", "lib/patriarch/services/#{behaviour_str}/after_manager_service.rb"
50
- template "after_service.rb", "lib/patriarch/services/#{behaviour_str}/after_service.rb"
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
- def create_undo_services(behaviour)
54
- undo_behaviour_str = Patriarch.undo(behaviour).underscore.downcase
78
+ def undo_class_name
79
+ Patriarch.undo(behaviour).classify
80
+ end
55
81
 
56
- template "authorization_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/authorization_service.rb"
57
-
58
- template "before_manager_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/before_manager_service.rb"
59
- template "before_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/before_service.rb"
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
- template "manager_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/manager_service.rb"
62
-
63
- template "undo_service.rb", "lib/patriarch/services/#{undo_behaviour_str}/service.rb"
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
- end # PatriarchGenerator
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
@@ -0,0 +1,5 @@
1
+ module Patriarch
2
+ module Behaviours
3
+ # Autoloads declaration will be inserted here
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Patriarch
2
+ module Services
3
+ # Autoloads declaration will be inserted here
4
+ end
5
+ end
@@ -1,3 +1,5 @@
1
+ require "redis/objects/sorted_sets"
2
+
1
3
  class Patriarch::DAOServices::BipartiteRelationshipBuilderService < Patriarch::Service
2
4
  def create(transaction_item)
3
5
  # t => changer nom pour différencier de la date créée pour le Patriarch::Transaction
@@ -1,3 +1,5 @@
1
+ require 'redis/objects/sorted_sets'
2
+
1
3
  class InvalidRedisTypeException < Exception
2
4
  end
3
5
 
@@ -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.downcase}:#{calling_entity.id}:#{redis_key}")
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
@@ -1,3 +1,3 @@
1
1
  module Patriarch
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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.3
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-26 00:00:00.000000000 Z
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: &12694700 !ruby/object:Gem::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: *12694700
24
+ version_requirements: *14218700
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: rails
38
- requirement: &12694280 !ruby/object:Gem::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: *12694280
35
+ version_requirements: *14218280
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: railties
49
- requirement: &12693800 !ruby/object:Gem::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: *12693300
46
+ version_requirements: *14192480
69
47
  - !ruby/object:Gem::Dependency
70
48
  name: rspec
71
- requirement: &12692620 !ruby/object:Gem::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: *12692620
57
+ version_requirements: *14192060
80
58
  - !ruby/object:Gem::Dependency
81
59
  name: fakeredis
82
- requirement: &12691360 !ruby/object:Gem::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: *12691360
68
+ version_requirements: *14191640
91
69
  - !ruby/object:Gem::Dependency
92
70
  name: autotest-rails
93
- requirement: &12690940 !ruby/object:Gem::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: *12690940
79
+ version_requirements: *14191220
102
80
  - !ruby/object:Gem::Dependency
103
81
  name: ZenTest
104
- requirement: &12690500 !ruby/object:Gem::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: *12690500
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