riaction 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,20 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- riaction (0.0.1)
4
+ riaction (0.0.3)
5
+ activemodel
5
6
  activerecord
6
- activesupport (>= 2.0)
7
7
  faraday
8
8
  faraday-stack
9
+ rake
9
10
  resque
10
11
 
11
12
  GEM
12
13
  remote: http://rubygems.org/
13
14
  specs:
14
- activerecord (2.3.14)
15
- activesupport (= 2.3.14)
16
- activesupport (2.3.14)
15
+ activemodel (3.1.1)
16
+ activesupport (= 3.1.1)
17
+ builder (~> 3.0.0)
18
+ i18n (~> 0.6)
19
+ activerecord (3.1.1)
20
+ activemodel (= 3.1.1)
21
+ activesupport (= 3.1.1)
22
+ arel (~> 2.2.1)
23
+ tzinfo (~> 0.3.29)
24
+ activesupport (3.1.1)
25
+ multi_json (~> 1.0)
17
26
  addressable (2.2.6)
27
+ arel (2.2.1)
28
+ builder (3.0.0)
18
29
  diff-lcs (1.1.3)
19
30
  faraday (0.7.5)
20
31
  addressable (~> 2.2.6)
@@ -22,11 +33,13 @@ GEM
22
33
  rack (>= 1.1.0, < 2)
23
34
  faraday-stack (0.1.3)
24
35
  faraday (~> 0.6)
36
+ i18n (0.6.0)
25
37
  multi_json (1.0.3)
26
38
  multipart-post (1.1.3)
27
39
  rack (1.3.5)
28
40
  rack-protection (1.1.4)
29
41
  rack
42
+ rake (0.9.2.2)
30
43
  redis (2.2.2)
31
44
  redis-namespace (1.0.3)
32
45
  redis (< 3.0.0)
@@ -48,6 +61,7 @@ GEM
48
61
  rack-protection (~> 1.1, >= 1.1.2)
49
62
  tilt (~> 1.3, >= 1.3.3)
50
63
  tilt (1.3.3)
64
+ tzinfo (0.3.30)
51
65
  vegas (0.1.8)
52
66
  rack (>= 1.0.0)
53
67
 
data/README.md CHANGED
@@ -107,6 +107,22 @@ Putting this all together, whenever an instance of the Comment class is created,
107
107
 
108
108
  _Note: If a class both declares itself as a profile and declares one or more events, and wants to refer to itself as the profile for any of those events, use `:profile => :self`_
109
109
 
110
+ ### Rails Rake Tasks ###
111
+
112
+ There are 3 rakes tasks included for summarizing all of your models' declarations as well as a way to initialize profiles on IActionable. To see a report of all the events declared across your application, run the following:
113
+
114
+ rake riaction:rails:list:events
115
+
116
+ To see a report of all the profiles declared across your application, run the following:
117
+
118
+ rake riaction:rails:list:profiles
119
+
120
+ Finally, to process all of the models in your application that declare themselves as profiles and initialize them on IActionable (for instance if you've added IActionable to an existing application with an established user base), run the following:
121
+
122
+ rake riaction:rails:process:profiles
123
+
124
+ ----------------
125
+
110
126
  ## IActionable ##
111
127
 
112
128
  [Visit their website!](http://www.iactionable.com)
data/lib/riaction.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  require "riaction/version"
2
2
  require 'riaction/iactionable/api.rb'
3
3
  require "riaction/riaction"
4
+ require "riaction/railtie" if defined?(Rails)
@@ -20,7 +20,7 @@ module IActionable
20
20
  private
21
21
 
22
22
  def extract_many_as(key_values, field, klass)
23
- if key_values.fetch(field).respond_to?(:inject)
23
+ if key_values.fetch(field, nil).respond_to?(:inject)
24
24
  loaded = []
25
25
  content = key_values.delete(field)
26
26
  content.each do |c|
@@ -28,7 +28,7 @@ module IActionable
28
28
  end
29
29
  loaded
30
30
  else
31
- nil
31
+ []
32
32
  end
33
33
  end
34
34
  end
@@ -0,0 +1,9 @@
1
+ require 'rails'
2
+
3
+ module Riaction
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ load "tasks/riaction.rake"
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module Riaction
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,99 +1,98 @@
1
- namespace 'iactionable' do
2
- namespace 'list' do
3
- desc "List all registered events"
4
- task :events => :environment do
5
- Dir.glob(File.join(RAILS_ROOT,"app","models","*.rb")).each do |rbfile|
6
- require rbfile
7
- end
1
+ namespace 'riaction' do
2
+ namespace 'rails' do
3
+ namespace 'list' do
4
+ desc "List all registered events"
5
+ task :events => :environment do
6
+ Dir.glob(File.join(RAILS_ROOT,"app","models","*.rb")).each do |rbfile|
7
+ require rbfile
8
+ end
8
9
 
9
- Riaction::EVENT_LOGGING_CLASSES.each do |klass|
10
- puts "#{klass} defines the following events:"
11
- klass.riaction_events.each_pair do |name, deets|
12
- puts " :#{name}:"
13
- if Riaction.crud_actions.include? deets[:trigger]
14
- puts " Trigger: Fired on ActiveRecord after_#{deets[:trigger]} callback"
15
- else
16
- puts " Trigger: By calling :trigger_#{deets[:trigger]}!"
17
- end
18
- case deets[:profile]
19
- when Symbol
20
- if deets[:profile] == :self
21
- puts " Profile: (self)"
10
+ Riaction::EVENT_LOGGING_CLASSES.each do |klass|
11
+ puts "#{klass} defines the following events:"
12
+ klass.riaction_events.each_pair do |name, deets|
13
+ puts " :#{name}:"
14
+ if Riaction.crud_actions.include? deets[:trigger]
15
+ puts " Trigger: Fired on ActiveRecord after_#{deets[:trigger]} callback"
22
16
  else
23
- puts " Profile: Value returned by :#{deets[:profile]}"
17
+ puts " Trigger: By calling :trigger_#{deets[:trigger]}!"
24
18
  end
25
- when Proc
26
- puts " Profile: Returned via Proc"
27
- end
28
- case deets[:params]
29
- when NilClass
30
- puts " Event Params: None"
31
- when Symbol
32
- puts " Event Params: Hash returned by :#{deets[:params]}"
33
- when Proc
34
- puts " Event Params: Hash returned via Proc"
35
- when Hash
36
- puts " Event Params: #{deets[:params]}"
37
- end
38
- case deets[:guard]
39
- when NilClass
40
- puts " Guard: None"
41
- when Proc
42
- puts " Guard: Boolean returned via Proc"
43
- when Hash
44
- puts " Guard: Boolean returned by :#{deets[:guard]}"
19
+ case deets[:profile]
20
+ when Symbol
21
+ if deets[:profile] == :self
22
+ puts " Profile: (self)"
23
+ else
24
+ puts " Profile: Value returned by :#{deets[:profile]}"
25
+ end
26
+ when Proc
27
+ puts " Profile: Returned via Proc"
28
+ end
29
+ case deets[:params]
30
+ when NilClass
31
+ puts " Event Params: None"
32
+ when Symbol
33
+ puts " Event Params: Hash returned by :#{deets[:params]}"
34
+ when Proc
35
+ puts " Event Params: Hash returned via Proc"
36
+ when Hash
37
+ puts " Event Params: #{deets[:params]}"
38
+ end
39
+ case deets[:guard]
40
+ when NilClass
41
+ puts " Guard: None"
42
+ when Proc
43
+ puts " Guard: Boolean returned via Proc"
44
+ when Hash
45
+ puts " Guard: Boolean returned by :#{deets[:guard]}"
46
+ end
47
+ puts ""
45
48
  end
46
- puts ""
49
+ puts "-------------------------------------------------------"
47
50
  end
48
- puts "-------------------------------------------------------"
49
51
  end
50
- end
51
52
 
52
- desc "List all registered profiles"
53
- task :profiles => :environment do
54
- Dir.glob(File.join(RAILS_ROOT,"app","models","*.rb")).each do |rbfile|
55
- require rbfile
56
- end
53
+ desc "List all registered profiles"
54
+ task :profiles => :environment do
55
+ Dir.glob(File.join(RAILS_ROOT,"app","models","*.rb")).each do |rbfile|
56
+ require rbfile
57
+ end
57
58
 
58
- Riaction::PROFILE_CLASSES.each do |klass|
59
- puts "#{klass} defines the following profile types:"
60
- klass.riaction_profiles.each_pair do |type, ids|
61
- puts " :#{type}:"
62
- puts " With the following ID types, and field used for the value:"
63
- ids.each_pair do |id_type, id|
59
+ Riaction::PROFILE_CLASSES.each do |klass|
60
+ declaration = klass.riaction_profiles.first
61
+ puts "#{klass} defines the following profile type:"
62
+ puts " :#{declaration[0]}:"
63
+ puts " With the following ID types and fields used as identifiers:"
64
+ declaration[1].each_pair do |id_type, id|
64
65
  puts " :#{id_type} => :#{id}"
65
66
  end
66
67
  puts ""
68
+ puts "-------------------------------------------------------"
67
69
  end
68
- puts "-------------------------------------------------------"
69
70
  end
70
71
  end
71
- end
72
72
 
73
- namespace 'process' do
74
- desc "Run through all classes acting as profiles and make sure each record/instance exists on IActionable"
75
- task :profiles => :environment do
76
- Dir.glob(File.join(RAILS_ROOT,"app","models","*.rb")).each do |rbfile|
77
- require rbfile
78
- end
73
+ namespace 'process' do
74
+ desc "Run through all classes acting as profiles and make sure each record/instance exists on IActionable"
75
+ task :profiles => :environment do
76
+ Dir.glob(File.join(RAILS_ROOT,"app","models","*.rb")).each do |rbfile|
77
+ require rbfile
78
+ end
79
79
 
80
- Riaction::PROFILE_CLASSES.each do |klass|
81
- begin
82
- klass.all.each do |obj|
83
- puts "Addressing #{klass} record #{obj.id}..."
84
- klass.riaction_profiles.each_pair do |type, ids|
85
- puts "...creating profile under type '#{type}'"
86
- obj.riaction_create_profile(type)
87
- default_keys = obj.riaction_profile_keys(type)
88
- ids.each_pair do |id_type, id|
80
+ Riaction::PROFILE_CLASSES.each do |klass|
81
+ begin
82
+ klass.all.each do |obj|
83
+ declaration = klass.riaction_profiles.first
84
+ puts "Addressing #{klass} record #{obj.id}; creating profile under type '#{declaration[0]}'"
85
+ obj.riaction_create_profile
86
+ default_keys = obj.riaction_profile_keys(declaration[0])
87
+ declaration[1].each_pair do |id_type, id|
89
88
  value = obj.send(id)
90
89
  puts "...updating profile with id type #{id_type} and value #{value}"
91
- obj.riaction_update_profile(type, default_keys[:profile_type], id_type)
90
+ obj.riaction_update_profile(id_type)
92
91
  end
93
92
  end
93
+ rescue Riaction::NoProfileDefined => e
94
+ puts "ERROR: #{klass} does not properly define a profile; skipping"
94
95
  end
95
- rescue IAction::Error::NoProfileDefined => e
96
- puts "ERROR: #{klass} does not properly define a profile; skipping"
97
96
  end
98
97
  end
99
98
  end
data/riaction.gemspec CHANGED
@@ -24,9 +24,10 @@ Gem::Specification.new do |s|
24
24
 
25
25
  s.add_development_dependency "rspec", ">= 2.6"
26
26
 
27
+ s.add_runtime_dependency "rake"
27
28
  s.add_runtime_dependency "faraday"
28
29
  s.add_runtime_dependency "faraday-stack"
29
- s.add_runtime_dependency "activesupport", ">= 2.0"
30
+ s.add_runtime_dependency "activemodel"
30
31
  s.add_runtime_dependency "activerecord"
31
32
  s.add_runtime_dependency "resque"
32
33
  end
@@ -2,24 +2,25 @@ require 'spec_helper.rb'
2
2
 
3
3
  describe Riaction do
4
4
  class RiactionTestBase
5
- include ActiveSupport::Callbacks
5
+ extend ActiveModel::Callbacks
6
6
  include Riaction
7
- define_callbacks :after_create, :after_update, :after_destroy
7
+
8
+ define_model_callbacks :create, :update, :destroy
8
9
 
9
10
  def self.base_class
10
11
  self
11
12
  end
12
13
 
13
14
  def initialize
14
- run_callbacks(:after_create)
15
+ run_callbacks(:create)
15
16
  end
16
17
 
17
18
  def update
18
- run_callbacks(:after_update)
19
+ run_callbacks(:update)
19
20
  end
20
21
 
21
22
  def destroy
22
- run_callbacks(:after_destroy)
23
+ run_callbacks(:destroy)
23
24
  end
24
25
 
25
26
  def id
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riaction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2156455040 !ruby/object:Gem::Requirement
16
+ requirement: &2153398980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,21 @@ dependencies:
21
21
  version: '2.6'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2156455040
24
+ version_requirements: *2153398980
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &2153398280 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2153398280
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: faraday
27
- requirement: &2156454560 !ruby/object:Gem::Requirement
38
+ requirement: &2153397820 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: '0'
33
44
  type: :runtime
34
45
  prerelease: false
35
- version_requirements: *2156454560
46
+ version_requirements: *2153397820
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: faraday-stack
38
- requirement: &2156453920 !ruby/object:Gem::Requirement
49
+ requirement: &2153397260 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,21 +54,21 @@ dependencies:
43
54
  version: '0'
44
55
  type: :runtime
45
56
  prerelease: false
46
- version_requirements: *2156453920
57
+ version_requirements: *2153397260
47
58
  - !ruby/object:Gem::Dependency
48
- name: activesupport
49
- requirement: &2156453140 !ruby/object:Gem::Requirement
59
+ name: activemodel
60
+ requirement: &2153396640 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
53
64
  - !ruby/object:Gem::Version
54
- version: '2.0'
65
+ version: '0'
55
66
  type: :runtime
56
67
  prerelease: false
57
- version_requirements: *2156453140
68
+ version_requirements: *2153396640
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: activerecord
60
- requirement: &2156452640 !ruby/object:Gem::Requirement
71
+ requirement: &2153386700 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '0'
66
77
  type: :runtime
67
78
  prerelease: false
68
- version_requirements: *2156452640
79
+ version_requirements: *2153386700
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: resque
71
- requirement: &2156452180 !ruby/object:Gem::Requirement
82
+ requirement: &2153386200 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,7 +87,7 @@ dependencies:
76
87
  version: '0'
77
88
  type: :runtime
78
89
  prerelease: false
79
- version_requirements: *2156452180
90
+ version_requirements: *2153386200
80
91
  description: Wrapper for IActionable's restful API and an "acts-as" style interface
81
92
  for models to behave as profiles and drive game events.
82
93
  email:
@@ -110,6 +121,7 @@ files:
110
121
  - lib/riaction/iactionable/objects/profile_summary.rb
111
122
  - lib/riaction/iactionable/objects/progress.rb
112
123
  - lib/riaction/iactionable/settings.rb
124
+ - lib/riaction/railtie.rb
113
125
  - lib/riaction/riaction.rb
114
126
  - lib/riaction/version.rb
115
127
  - lib/tasks/riaction.rake