saasable 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.3
@@ -10,7 +10,9 @@ class Saasable::Middleware
10
10
  env[:saasable] = {:current_saas => saas_for_host(env["SERVER_NAME"])}
11
11
  env[:saasable][:current_saas].activate! if env[:saasable][:current_saas]
12
12
 
13
- @app.call env
13
+ @app.call(env).tap do
14
+ env[:saasable][:current_saas].deactivate! if env[:saasable][:current_saas]
15
+ end
14
16
  end
15
17
 
16
18
  private
@@ -21,6 +21,7 @@ module Saasable::Mongoid::SaasDocument
21
21
  index :hosts
22
22
  end
23
23
 
24
+ klass.instance_variable_set("@_active_saas", nil)
24
25
  klass.instance_variable_set("@_after_activate_chain", [])
25
26
  klass.instance_variable_set("@_after_deactivate_chain", [])
26
27
  end
@@ -40,6 +41,7 @@ module Saasable::Mongoid::SaasDocument
40
41
  klass.class_eval "field :saas_id, :type => BSON::ObjectId, :default => BSON::ObjectId(\"#{self._id}\")"
41
42
  end
42
43
 
44
+ self.class.instance_variable_set("@_active_saas", self)
43
45
  self.class.instance_variable_get("@_after_activate_chain").each { |method_name| send(method_name) }
44
46
  end
45
47
 
@@ -57,7 +59,8 @@ module Saasable::Mongoid::SaasDocument
57
59
  klass.fields["saas_id"].options.delete(:default)
58
60
  end
59
61
 
60
- @_after_deactivate_chain.each { |method_name| send(method_name) }
62
+ last_active_saas, @_active_saas = active_saas, nil
63
+ @_after_deactivate_chain.each { |method_name| last_active_saas.send(method_name) }
61
64
  end
62
65
 
63
66
  def find_by_host! a_host
@@ -79,12 +82,24 @@ module Saasable::Mongoid::SaasDocument
79
82
  end
80
83
  end
81
84
 
82
- def after_activate method_name
83
- @_after_activate_chain << method_name
85
+ def active_saas
86
+ @_active_saas
84
87
  end
85
88
 
86
- def after_deactivate method_name
87
- @_after_deactivate_chain << method_name
89
+ def after_activate *method_names
90
+ @_after_activate_chain += method_names
91
+ end
92
+
93
+ def after_deactivate *method_names
94
+ @_after_deactivate_chain += method_names
95
+ end
96
+
97
+ def remove_after_activate *method_names
98
+ @_after_activate_chain -= method_names
99
+ end
100
+
101
+ def remove_after_deactivate *method_names
102
+ @_after_deactivate_chain -= method_names
88
103
  end
89
104
  end
90
105
  end
data/saasable.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "saasable"
8
- s.version = "0.3.2"
8
+ s.version = "0.3.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Educa2", "Rafael Gaspar"]
12
- s.date = "2013-04-18"
12
+ s.date = "2013-10-15"
13
13
  s.description = "A gem for making a Multi-Tenant SaaS using Mongoid"
14
14
  s.email = "suporte@educa2.com.br"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saasable
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.3.3
4
5
  prerelease:
5
- version: 0.3.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Educa2
@@ -10,88 +10,88 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-18 00:00:00.000000000 Z
13
+ date: 2013-10-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mongoid
17
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
18
19
  requirements:
19
20
  - - <
20
21
  - !ruby/object:Gem::Version
21
22
  version: 3.0.0
22
- none: false
23
23
  type: :runtime
24
+ prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
25
27
  requirements:
26
28
  - - <
27
29
  - !ruby/object:Gem::Version
28
30
  version: 3.0.0
29
- none: false
30
- prerelease: false
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: rspec
33
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
34
35
  requirements:
35
36
  - - ! '>='
36
37
  - !ruby/object:Gem::Version
37
38
  version: '0'
38
- none: false
39
39
  type: :development
40
+ prerelease: false
40
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
41
43
  requirements:
42
44
  - - ! '>='
43
45
  - !ruby/object:Gem::Version
44
46
  version: '0'
45
- none: false
46
- prerelease: false
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
50
51
  requirements:
51
52
  - - ! '>='
52
53
  - !ruby/object:Gem::Version
53
54
  version: '0'
54
- none: false
55
55
  type: :development
56
+ prerelease: false
56
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
57
59
  requirements:
58
60
  - - ! '>='
59
61
  - !ruby/object:Gem::Version
60
62
  version: '0'
61
- none: false
62
- prerelease: false
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: jeweler
65
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
66
67
  requirements:
67
68
  - - ! '>='
68
69
  - !ruby/object:Gem::Version
69
70
  version: '0'
70
- none: false
71
71
  type: :development
72
+ prerelease: false
72
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
73
75
  requirements:
74
76
  - - ! '>='
75
77
  - !ruby/object:Gem::Version
76
78
  version: '0'
77
- none: false
78
- prerelease: false
79
79
  - !ruby/object:Gem::Dependency
80
80
  name: rdoc
81
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
82
83
  requirements:
83
84
  - - ! '>='
84
85
  - !ruby/object:Gem::Version
85
86
  version: '0'
86
- none: false
87
87
  type: :development
88
+ prerelease: false
88
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
89
91
  requirements:
90
92
  - - ! '>='
91
93
  - !ruby/object:Gem::Version
92
94
  version: '0'
93
- none: false
94
- prerelease: false
95
95
  description: A gem for making a Multi-Tenant SaaS using Mongoid
96
96
  email: suporte@educa2.com.br
97
97
  executables: []
@@ -128,20 +128,20 @@ rdoc_options: []
128
128
  require_paths:
129
129
  - lib
130
130
  required_ruby_version: !ruby/object:Gem::Requirement
131
+ none: false
131
132
  requirements:
132
133
  - - ! '>='
133
134
  - !ruby/object:Gem::Version
135
+ version: '0'
134
136
  segments:
135
137
  - 0
136
- hash: -1849778942002607944
137
- version: '0'
138
- none: false
138
+ hash: -553495662299571050
139
139
  required_rubygems_version: !ruby/object:Gem::Requirement
140
+ none: false
140
141
  requirements:
141
142
  - - ! '>='
142
143
  - !ruby/object:Gem::Version
143
144
  version: '0'
144
- none: false
145
145
  requirements: []
146
146
  rubyforge_project:
147
147
  rubygems_version: 1.8.25