current_instance 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ module CurrentInstance
2
+ def self.included(base)
3
+ base.class_eval %q{
4
+ @@current_name = "current_#{base.name.downcase}".to_sym
5
+ cattr_accessor :current_name
6
+ @@current_name_id = "#\{@@current_name\}_id".to_sym
7
+ cattr_accessor :current_name_id
8
+ }
9
+ base.extend(ClassMethods)
10
+ end
11
+ end
@@ -0,0 +1,38 @@
1
+ module CurrentInstance
2
+ module ClassMethods
3
+
4
+
5
+ # Set Food.current by id:
6
+ # Food.current_id #=> nil
7
+ # Food.current_id = 1
8
+ # Food.current #=> #<Food id: 1, name: "Fondue"...>
9
+ # Food.current_id = nil
10
+ # Food.current #=> nil
11
+ def current_id
12
+ Thread.current[current_name_id]
13
+ end
14
+
15
+
16
+ def current_id=(current_id)
17
+ Thread.current[current_name_id] = current_id
18
+ end
19
+
20
+ # Set User.current by assigning an object:
21
+ # User.current = User.first
22
+ # User.current #=> #<User id: 1, name: "Flinn"...>
23
+ # User.current = nil
24
+ # User.current #=> nil
25
+ def current
26
+ unless current_id.blank?
27
+ Thread.current[current_name] ||= self.respond_to?(:cached_find_by_id) ?
28
+ cached_find_by_id(current_id) :
29
+ find_by_id(current_id)
30
+ end
31
+ end
32
+
33
+ def current=(current)
34
+ Thread.current[current_name] = current
35
+ self.current_id = current.blank? ? nil : (current.id rescue nil)
36
+ end
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module CurrentInstance
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: current_instance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70301790920960 !ruby/object:Gem::Requirement
16
+ requirement: &70110065090200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70301790920960
24
+ version_requirements: *70110065090200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70301790919840 !ruby/object:Gem::Requirement
27
+ requirement: &70110065089060 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70301790919840
35
+ version_requirements: *70110065089060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70301790919120 !ruby/object:Gem::Requirement
38
+ requirement: &70110065088320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70301790919120
46
+ version_requirements: *70110065088320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: i18n
49
- requirement: &70301790918660 !ruby/object:Gem::Requirement
49
+ requirement: &70110065087880 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70301790918660
57
+ version_requirements: *70110065087880
58
58
  description: Thread Safe Current Class Instance
59
59
  email:
60
60
  - chaffeqa@gmail.com
@@ -68,6 +68,8 @@ files:
68
68
  - Rakefile
69
69
  - current_instance.gemspec
70
70
  - lib/current_instance.rb
71
+ - lib/current_instance/base.rb
72
+ - lib/current_instance/class_methods.rb
71
73
  - lib/current_instance/version.rb
72
74
  - spec/current_instance_spec.rb
73
75
  - spec/user.rb