redcrumbs 0.1.0 → 0.1.3

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/README.md CHANGED
@@ -86,7 +86,7 @@ Not too shabby. But crumbs can also track the user that made the change (creator
86
86
  => #<User id: 2, name: "Jon" ... >
87
87
 
88
88
  # and really cool, returns a limited (default 100) array of crumbs affecting a user in reverse order:
89
- > user.crumbs(:limit => 20)
89
+ > user.crumbs_as_user(:limit => 20)
90
90
  => [#<Crumb id: 64 ... >, #<Crumb id: 53 ... >, #<Crumb id: 42 ... > ... ]
91
91
 
92
92
  # or if you just want the crumbs created by the user
@@ -18,19 +18,19 @@ module Redcrumbs
18
18
  DataMapper.setup(:default, {:adapter => "redis"})
19
19
 
20
20
  property :id, Serial
21
- property :subject_id, Integer, :index => true
22
- property :subject_type, String, :index => true
23
- property :modifications, Json, :default => "{}"
21
+ property :subject_id, Integer, :index => true, :lazy => false
22
+ property :subject_type, String, :index => true, :lazy => false
23
+ property :modifications, Json, :default => "{}", :lazy => false
24
24
  property :created_at, DateTime
25
25
  property :updated_at, DateTime
26
- property :stored_creator, Json
27
- property :stored_target, Json
28
- property :stored_subject, Json
26
+ property :stored_creator, Json, :lazy => false
27
+ property :stored_target, Json, :lazy => false
28
+ property :stored_subject, Json, :lazy => false
29
29
  property :creator_id, Integer, :index => true
30
30
  property :target_id, Integer, :index => true
31
31
 
32
32
  DataMapper.finalize
33
-
33
+
34
34
  after :save, :set_mortality
35
35
 
36
36
  attr_accessor :_subject, :_creator, :_target
@@ -43,8 +43,7 @@ module Redcrumbs
43
43
  self.modifications = params[:modifications] unless !params[:modifications]
44
44
  end
45
45
 
46
- # Remember to change the respond_to? argument when moving from user/target class to dynamic with user as default
47
- def self.build_from(subject)
46
+ def self.build_with_modifications(subject)
48
47
  unless subject.watched_changes.empty?
49
48
  params = {:modifications => subject.watched_changes}
50
49
  params.merge!({:subject => subject})
@@ -52,6 +51,12 @@ module Redcrumbs
52
51
  end
53
52
  end
54
53
 
54
+ def set_context_from(subject)
55
+ self.subject = subject unless !!subject_id
56
+ self.target ||= self.subject.target if self.subject.respond_to?(:target)
57
+ self.creator ||= self.subject.creator if self.subject.respond_to?(:creator)
58
+ end
59
+
55
60
  def redis_key
56
61
  "redcrumbs_crumbs:#{id}"
57
62
  end
@@ -20,11 +20,10 @@ module Redcrumbs
20
20
  end
21
21
 
22
22
  def notify_changes
23
- unless watched_changes.empty?
24
- n = Crumb.build_from(self)
25
- n.save
26
- end
23
+ n = Crumb.build_with_modifications(self) unless watched_changes.empty?
27
24
  yield
25
+ n.set_context_from(self) unless !n
26
+ n.save unless !n
28
27
  end
29
28
  end
30
29
  end
@@ -16,8 +16,8 @@ module Redcrumbs
16
16
  options[:only] = Array(options[:only])
17
17
  options[:store] = Array(options[:store])
18
18
 
19
- class_inheritable_accessor :redcrumbs_options
20
- class_inheritable_accessor :redcrumbs_callback_options
19
+ class_attribute :redcrumbs_options
20
+ class_attribute :redcrumbs_callback_options
21
21
 
22
22
  self.redcrumbs_options = options.dup
23
23
  self.redcrumbs_callback_options = options.dup.select {|k,v| [:if, :unless].include?(k.to_sym)}
@@ -21,7 +21,7 @@ module Redcrumbs
21
21
  opts[:limit] ||= 100
22
22
  arr = crumbs_for
23
23
  arr += crumbs_by
24
- arr.all(:limit => opts[:limit])
24
+ arr.all(opts)
25
25
  end
26
26
 
27
27
  # Creator method defines who should be considered the creator when a model is updated. This
@@ -1,3 +1,3 @@
1
1
  module Redcrumbs
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redcrumbs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-21 00:00:00.000000000 +01:00
12
+ date: 2012-05-31 00:00:00.000000000 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: data_mapper
17
- requirement: &2152286280 !ruby/object:Gem::Requirement
17
+ requirement: &2157900720 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.2.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152286280
25
+ version_requirements: *2157900720
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: dm-redis-adapter
28
- requirement: &2152285780 !ruby/object:Gem::Requirement
28
+ requirement: &2157900220 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: 0.6.2
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2152285780
36
+ version_requirements: *2157900220
37
37
  description: Fast and unobtrusive activity tracking of ActiveRecord models using DataMapper
38
38
  and Redis
39
39
  email: