patriarch 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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