merit 1.7.0 → 1.7.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile +3 -0
- data/README.md +102 -29
- data/lib/generators/active_record/remove_generator.rb +21 -0
- data/lib/generators/active_record/templates/remove_fields_from_model.rb +6 -0
- data/lib/generators/active_record/templates/remove_merit_tables.rb +10 -0
- data/lib/generators/merit/remove_generator.rb +18 -0
- data/lib/generators/merit/templates/merit.rb +8 -5
- data/lib/merit.rb +24 -14
- data/lib/merit/model_additions.rb +1 -9
- data/lib/merit/models/active_record/merit/action.rb +1 -1
- data/lib/merit/models/active_record/merit/activity_log.rb +1 -1
- data/lib/merit/models/active_record/merit/badges_sash.rb +1 -1
- data/merit.gemspec +1 -1
- data/test/dummy-mongoid/config/initializers/merit.rb +1 -1
- data/test/dummy/app/models/comment.rb +1 -1
- data/test/dummy/app/models/user.rb +1 -1
- data/test/dummy/app/views/layouts/application.html.erb +1 -1
- data/test/dummy/config/application.rb +3 -0
- data/test/dummy/config/initializers/merit.rb +1 -1
- data/test/dummy/db/schema.rb +1 -1
- data/test/unit/target_finder_test.rb +6 -2
- metadata +20 -17
- data/lib/merit/models/mongo_mapper/merit/action.rb +0 -15
- data/lib/merit/models/mongo_mapper/sash.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 123265ab30632290e284deffe94b000aab61af82
|
4
|
+
data.tar.gz: 3e2dcca325352e75a7237c97f009104945af6215
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee7cb5ebfc7acf53f13d03199f3456740d2a10c171a7d7aabb6eafad7abb919ab1c0855ec00d23a5a6a248f36502358ae02b3a6b9a5a70af69aa4bbc47c45a6d
|
7
|
+
data.tar.gz: 907ebc5ea903eb2977c9240fd5d2f5e9772091cff6352743520198b67b595e7187d56c974826f25bdcf2b88417cb5903229356fd5aba185d730142e472283900
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,37 @@
|
|
1
1
|
# Merit
|
2
|
-
Merit is a reputation Ruby gem that supports Badges, Points, and Rankings.
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
Merit adds reputation behavior to Rails apps in the form of Badges, Points,
|
4
|
+
and Rankings.
|
6
5
|
|
7
6
|
[](http://travis-ci.org/tute/merit)
|
8
7
|
[](https://codeclimate.com/github/tute/merit)
|
9
8
|
|
9
|
+
|
10
|
+
# Table of Contents
|
11
|
+
|
12
|
+
- [Merit](#merit)
|
13
|
+
- [Table of Contents](#table-of-contents)
|
14
|
+
- [Installation](#installation)
|
15
|
+
- [Badges](#badges)
|
16
|
+
- [Creating Badges](#creating-badges)
|
17
|
+
- [Example](#example)
|
18
|
+
- [Defining Rules](#defining-rules)
|
19
|
+
- [Examples](#examples)
|
20
|
+
- [Other Actions](#other-actions)
|
21
|
+
- [Displaying Badges](#displaying-badges)
|
22
|
+
- [Points](#points)
|
23
|
+
- [Defining Rules](#defining-rules-1)
|
24
|
+
- [Examples](#examples-1)
|
25
|
+
- [Other Actions](#other-actions-1)
|
26
|
+
- [Displaying Points](#displaying-points)
|
27
|
+
- [Rankings](#rankings)
|
28
|
+
- [Defining Rules](#defining-rules-2)
|
29
|
+
- [Examples](#examples-2)
|
30
|
+
- [Displaying Rankings](#displaying-rankings)
|
31
|
+
- [Uninstalling Merit](#uninstalling-merit)
|
32
|
+
- [To-do List](#to-do-list)
|
33
|
+
|
34
|
+
|
10
35
|
# Installation
|
11
36
|
|
12
37
|
1. Add `gem 'merit'` to your `Gemfile`
|
@@ -16,10 +41,11 @@ Merit is a reputation Ruby gem that supports Badges, Points, and Rankings.
|
|
16
41
|
5. Define badges in `config/initializers/merit.rb`
|
17
42
|
6. Configure reputation rules for your application in `app/models/merit/*`
|
18
43
|
|
19
|
-
---
|
20
44
|
|
21
45
|
# Badges
|
46
|
+
|
22
47
|
## Creating Badges
|
48
|
+
|
23
49
|
Create badges in `config/initializers/merit.rb`
|
24
50
|
|
25
51
|
`Merit::Badge.create!` takes a hash describing the badge:
|
@@ -30,6 +56,7 @@ Create badges in `config/initializers/merit.rb`
|
|
30
56
|
* `:custom_fields` hash of anything else you want associated with the badge (optional)
|
31
57
|
|
32
58
|
### Example
|
59
|
+
|
33
60
|
```ruby
|
34
61
|
Merit::Badge.create! ({
|
35
62
|
id: 1,
|
@@ -39,11 +66,15 @@ Merit::Badge.create! ({
|
|
39
66
|
})
|
40
67
|
```
|
41
68
|
|
42
|
-
## Defining
|
43
|
-
|
44
|
-
Badges can
|
69
|
+
## Defining Rules
|
70
|
+
|
71
|
+
Badges can be automatically given to any resource in your application based on
|
72
|
+
rules and conditions you create. Badges can also have levels, and be permanent
|
73
|
+
or temporary (A temporary badge is revoked when the conditions of the badge
|
74
|
+
are no longer met).
|
45
75
|
|
46
|
-
Badge rules / conditions are defined in `app/models/merit/badge_rules.rb`
|
76
|
+
Badge rules / conditions are defined in `app/models/merit/badge_rules.rb`
|
77
|
+
`initialize` block by calling `grant_on` with the following parameters:
|
47
78
|
|
48
79
|
* `'controller#action'` a string similar to Rails routes
|
49
80
|
* `:badge` corresponds to the `:name` of the badge
|
@@ -76,11 +107,11 @@ grant_on 'comments#vote', badge: 'relevant-commenter', to: :user do |comment|
|
|
76
107
|
end
|
77
108
|
|
78
109
|
grant_on ['users#create', 'users#update'], badge: 'autobiographer', temporary: true do |user|
|
79
|
-
user.name
|
110
|
+
user.name? && user.email?
|
80
111
|
end
|
81
112
|
```
|
82
113
|
|
83
|
-
## Other
|
114
|
+
## Other Actions
|
84
115
|
|
85
116
|
```ruby
|
86
117
|
# Check granted badges
|
@@ -102,9 +133,23 @@ Badge.last_granted(since_date: 1.week.ago, limit: 20)
|
|
102
133
|
Badge.find(1).users
|
103
134
|
```
|
104
135
|
|
105
|
-
|
136
|
+
## Displaying Badges
|
106
137
|
|
107
|
-
|
138
|
+
Meritable models have a `badges` method which returns an array of associated
|
139
|
+
badges:
|
140
|
+
|
141
|
+
```erb
|
142
|
+
<ul>
|
143
|
+
<% current_user.badges.each do |badge| %>
|
144
|
+
<li><%= badge.name %></li>
|
145
|
+
<% end %>
|
146
|
+
</ul>
|
147
|
+
```
|
148
|
+
|
149
|
+
|
150
|
+
# Points
|
151
|
+
|
152
|
+
## Defining Rules
|
108
153
|
|
109
154
|
Points are given to "meritable" resources on actions-triggered, either to the
|
110
155
|
action user or to the method(s) defined in the `:to` option. Define rules on
|
@@ -114,17 +159,18 @@ action user or to the method(s) defined in the `:to` option. Define rules on
|
|
114
159
|
|
115
160
|
* `score`
|
116
161
|
* `Integer`
|
117
|
-
* `Proc`, or any object that accepts `call` which takes one argument, where
|
162
|
+
* `Proc`, or any object that accepts `call` which takes one argument, where
|
163
|
+
the target_object is passed in and the return value is used as the score.
|
118
164
|
* `:on` action as string or array of strings (similar to Rails routes)
|
119
165
|
* `:to` method(s) to send to the target_object (who should be scored?)
|
120
|
-
* `:model_name` (optional) to specify the model name if it cannot be guessed
|
121
|
-
(e.g. `model_name: 'User'` for `RegistrationsController`,
|
122
|
-
|
166
|
+
* `:model_name` (optional) to specify the model name if it cannot be guessed
|
167
|
+
from the controller. (e.g. `model_name: 'User'` for `RegistrationsController`,
|
168
|
+
or `model_name: 'Comment'` for `Api::CommentsController`)
|
123
169
|
* `&block`
|
124
170
|
* empty (always scores)
|
125
171
|
* a block which evaluates to boolean (recieves target object as parameter)
|
126
172
|
|
127
|
-
|
173
|
+
### Examples
|
128
174
|
|
129
175
|
```ruby
|
130
176
|
# app/models/merit/point_rules.rb
|
@@ -139,20 +185,23 @@ score 20, on: [
|
|
139
185
|
|
140
186
|
score 15, on: 'reviews#create', to: [:reviewer, :reviewed]
|
141
187
|
|
142
|
-
|
143
|
-
score
|
188
|
+
proc = lambda { |photo| PhotoPointsCalculator.calculate_score_for(photo) }
|
189
|
+
score proc, on: 'photos#create'
|
144
190
|
```
|
145
191
|
|
146
|
-
|
147
|
-
# Check awarded points
|
148
|
-
current_user.points # Returns an integer
|
192
|
+
## Other Actions
|
149
193
|
|
194
|
+
```ruby
|
150
195
|
# Score manually
|
151
196
|
current_user.add_points(20, 'Optional log message')
|
152
197
|
current_user.subtract_points(10)
|
153
198
|
```
|
154
199
|
|
155
200
|
```ruby
|
201
|
+
# Query awarded points since a given date
|
202
|
+
score_points = current_user.sash.scores.first.score_points
|
203
|
+
score_points.where("created_at > '#{1.month.ago}'").sum(:num_points)
|
204
|
+
|
156
205
|
# List top 10 scored users in the last month
|
157
206
|
Merit::Score.top_scored
|
158
207
|
|
@@ -164,18 +213,27 @@ Merit::Score.top_scored(
|
|
164
213
|
)
|
165
214
|
```
|
166
215
|
|
167
|
-
|
216
|
+
## Displaying Points
|
217
|
+
|
218
|
+
Meritable models have a `points` method which returns an integer:
|
219
|
+
|
220
|
+
```erb
|
221
|
+
<%= current_user.points %>
|
222
|
+
```
|
223
|
+
|
168
224
|
|
169
|
-
#
|
225
|
+
# Rankings
|
170
226
|
|
171
|
-
|
172
|
-
like badges,
|
227
|
+
A common ranking use case is 5 stars. They are not given at specified actions
|
228
|
+
like badges, a cron job should be defined to test if ranks are to be granted.
|
229
|
+
|
230
|
+
## Defining Rules
|
173
231
|
|
174
232
|
Define rules on `app/models/merit/rank_rules.rb`:
|
175
233
|
|
176
234
|
`set_rank` accepts:
|
177
235
|
|
178
|
-
* `:level` ranking level (greater is better)
|
236
|
+
* `:level` ranking level (greater is better, Lexicographical order)
|
179
237
|
* `:to` model or scope to check if new rankings apply
|
180
238
|
* `:level_name` attribute name (default is empty and results in
|
181
239
|
'`level`' attribute, if set it's appended like
|
@@ -190,7 +248,7 @@ end
|
|
190
248
|
```
|
191
249
|
|
192
250
|
|
193
|
-
|
251
|
+
### Examples
|
194
252
|
|
195
253
|
```ruby
|
196
254
|
set_rank level: 2, to: Committer.active do |committer|
|
@@ -202,8 +260,23 @@ set_rank level: 3, to: Committer.active do |committer|
|
|
202
260
|
end
|
203
261
|
```
|
204
262
|
|
263
|
+
## Displaying Rankings
|
264
|
+
|
265
|
+
```erb
|
266
|
+
<%= current_user.level %>
|
267
|
+
```
|
268
|
+
|
269
|
+
|
270
|
+
# Uninstalling Merit
|
271
|
+
|
272
|
+
1. Run `rails d merit:install`
|
273
|
+
2. Run `rails d merit MODEL_NAME` (e.g. `user`)
|
274
|
+
3. Run `rails g merit:remove MODEL_NAME` (e.g. `user`)
|
275
|
+
4. Run `rake db:migrate`
|
276
|
+
5. Remove `merit` from your Gemfile
|
277
|
+
|
205
278
|
|
206
|
-
# To-do
|
279
|
+
# To-do List
|
207
280
|
|
208
281
|
* Finish Observer implementation for `Judge`.
|
209
282
|
* Move level from meritable model into Sash
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module Generators
|
5
|
+
class RemoveGenerator < ActiveRecord::Generators::Base
|
6
|
+
include Rails::Generators::Migration
|
7
|
+
|
8
|
+
source_root File.expand_path('../templates', __FILE__)
|
9
|
+
desc "Creates a migration file to remove all traces of Merit on the DB"
|
10
|
+
|
11
|
+
def self.next_migration_number(path)
|
12
|
+
ActiveRecord::Generators::Base.next_migration_number(path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def copy_migrations_and_model
|
16
|
+
migration_template 'remove_merit_tables.rb', 'db/migrate/remove_merit_tables.rb'
|
17
|
+
migration_template "remove_fields_from_model.rb", "db/migrate/remove_fields_from_#{table_name}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Merit
|
2
|
+
module Generators
|
3
|
+
class RemoveGenerator < Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
hook_for :orm
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def model_exists?
|
10
|
+
File.exists?(File.join(destination_root, model_path))
|
11
|
+
end
|
12
|
+
|
13
|
+
def model_path
|
14
|
+
@model_path ||= File.join("app", "models", "#{file_path}.rb")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -3,7 +3,7 @@ Merit.setup do |config|
|
|
3
3
|
# Check rules on each request or in background
|
4
4
|
# config.checks_on_each_request = true
|
5
5
|
|
6
|
-
# Define ORM. Could be :active_record (default) and :
|
6
|
+
# Define ORM. Could be :active_record (default) and :mongoid
|
7
7
|
# config.orm = :active_record
|
8
8
|
|
9
9
|
# Define :user_model_name. This model will be used to grand badge if no :to option is given. Default is "User".
|
@@ -14,11 +14,14 @@ Merit.setup do |config|
|
|
14
14
|
end
|
15
15
|
|
16
16
|
# Create application badges (uses https://github.com/norman/ambry)
|
17
|
-
#
|
18
|
-
#
|
17
|
+
# badge_id = 0
|
18
|
+
# [{
|
19
|
+
# id: (badge_id = badge_id+1),
|
19
20
|
# name: 'just-registered'
|
20
21
|
# }, {
|
21
|
-
# id:
|
22
|
+
# id: (badge_id = badge_id+1),
|
22
23
|
# name: 'best-unicorn',
|
23
24
|
# custom_fields: { category: 'fantasy' }
|
24
|
-
# }
|
25
|
+
# }].each do |attrs|
|
26
|
+
# Merit::Badge.create! attrs
|
27
|
+
# end
|
data/lib/merit.rb
CHANGED
@@ -11,33 +11,43 @@ require 'merit/base_target_finder'
|
|
11
11
|
require 'merit/target_finder'
|
12
12
|
|
13
13
|
module Merit
|
14
|
+
def self.setup
|
15
|
+
@config ||= Configuration.new
|
16
|
+
yield @config if block_given?
|
17
|
+
end
|
18
|
+
|
14
19
|
# Check rules on each request
|
15
|
-
|
16
|
-
|
20
|
+
def self.checks_on_each_request
|
21
|
+
@config.checks_on_each_request
|
22
|
+
end
|
17
23
|
|
18
|
-
# Define ORM
|
19
|
-
|
20
|
-
|
24
|
+
# # Define ORM
|
25
|
+
def self.orm
|
26
|
+
@config.orm
|
27
|
+
end
|
21
28
|
|
22
29
|
# Define user_model_name
|
23
|
-
mattr_accessor :user_model_name
|
24
|
-
@@user_model_name = 'User'
|
25
30
|
def self.user_model
|
26
|
-
|
31
|
+
@config.user_model_name.constantize
|
27
32
|
end
|
28
33
|
|
29
34
|
# Define current_user_method
|
30
|
-
mattr_accessor :current_user_method
|
31
35
|
def self.current_user_method
|
32
|
-
|
36
|
+
@config.current_user_method || "current_#{@config.user_model_name.downcase}".to_sym
|
33
37
|
end
|
34
38
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
class Configuration
|
40
|
+
attr_accessor :checks_on_each_request,
|
41
|
+
:orm, :user_model_name, :current_user_method
|
42
|
+
def initialize
|
43
|
+
@checks_on_each_request = true
|
44
|
+
@orm = :active_record
|
45
|
+
@user_model_name = 'User'
|
46
|
+
end
|
39
47
|
end
|
40
48
|
|
49
|
+
setup
|
50
|
+
|
41
51
|
class BadgeNotFound < Exception; end
|
42
52
|
class RankAttributeNotDefined < Exception; end
|
43
53
|
|
@@ -24,12 +24,7 @@ module Merit
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def _merit_orm_specific_config
|
27
|
-
if Merit.orm == :
|
28
|
-
plugin Merit
|
29
|
-
key :sash_id, String
|
30
|
-
key :points, Integer, default: 0
|
31
|
-
key :level, Integer, default: 0
|
32
|
-
elsif Merit.orm == :mongoid
|
27
|
+
if Merit.orm == :mongoid
|
33
28
|
field :sash_id
|
34
29
|
field :points, type: Integer, default: 0
|
35
30
|
field :level, type: Integer, default: 0
|
@@ -62,9 +57,6 @@ end
|
|
62
57
|
if Object.const_defined?('ActiveRecord')
|
63
58
|
ActiveRecord::Base.send :include, Merit
|
64
59
|
end
|
65
|
-
if Object.const_defined?('MongoMapper')
|
66
|
-
MongoMapper::Document.plugin Merit
|
67
|
-
end
|
68
60
|
if Object.const_defined?('Mongoid')
|
69
61
|
Mongoid::Document.send :include, Merit
|
70
62
|
end
|
@@ -4,7 +4,7 @@ module Merit
|
|
4
4
|
|
5
5
|
has_many :activity_logs, class_name: Merit::ActivityLog
|
6
6
|
|
7
|
-
|
7
|
+
if defined?(ProtectedAttributes) || !defined?(ActionController::StrongParameters)
|
8
8
|
attr_accessible :user_id, :action_method, :action_value, :had_errors,
|
9
9
|
:target_model, :target_id, :processed, :log
|
10
10
|
end
|
@@ -5,7 +5,7 @@ module Merit
|
|
5
5
|
belongs_to :action, class_name: Merit::Action
|
6
6
|
belongs_to :related_change, polymorphic: true
|
7
7
|
|
8
|
-
|
8
|
+
if defined?(ProtectedAttributes) || !defined?(ActionController::StrongParameters)
|
9
9
|
attr_accessible :action_id, :related_change, :description, :created_at
|
10
10
|
end
|
11
11
|
end
|
data/merit.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.homepage = "http://github.com/tute/merit"
|
6
6
|
s.files = `git ls-files`.split("\n").reject{|f| f =~ /^\./ }
|
7
7
|
s.license = 'MIT'
|
8
|
-
s.version = '1.7.
|
8
|
+
s.version = '1.7.1'
|
9
9
|
s.authors = ["Tute Costa"]
|
10
10
|
s.email = 'tutecosta@gmail.com'
|
11
11
|
|
@@ -3,7 +3,7 @@ Merit.setup do |config|
|
|
3
3
|
# Check rules on each request or in background
|
4
4
|
# config.checks_on_each_request = true
|
5
5
|
|
6
|
-
# Define ORM. Could be :active_record (default) and :
|
6
|
+
# Define ORM. Could be :active_record (default) and :mongoid
|
7
7
|
config.orm = :mongoid
|
8
8
|
end
|
9
9
|
|
@@ -16,6 +16,9 @@ module Dummy
|
|
16
16
|
# config.i18n.default_locale = :de
|
17
17
|
# config.active_record.whitelist_attributes = true
|
18
18
|
|
19
|
+
# http://stackoverflow.com/questions/20361428/rails-i18n-validation-deprecation-warning
|
20
|
+
config.i18n.enforce_available_locales = true
|
21
|
+
|
19
22
|
# Configure the default encoding used in templates for Ruby 1.9.
|
20
23
|
config.encoding = "utf-8"
|
21
24
|
|
@@ -3,7 +3,7 @@ Merit.setup do |config|
|
|
3
3
|
# Check rules on each request or in background
|
4
4
|
# config.checks_on_each_request = true
|
5
5
|
|
6
|
-
# Define ORM. Could be:active_record (default)
|
6
|
+
# Define ORM. Could be:active_record (default) and :mongoid
|
7
7
|
# config.orm = :active_record
|
8
8
|
end
|
9
9
|
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20130329224410) do
|
15
15
|
|
16
16
|
create_table "badges_sashes", :force => true do |t|
|
17
17
|
t.integer "badge_id"
|
@@ -24,7 +24,9 @@ describe Merit::TargetFinder do
|
|
24
24
|
|
25
25
|
describe 'rule#to is :action_user' do
|
26
26
|
it 'should return an array including user that executed the action' do
|
27
|
-
Merit.
|
27
|
+
Merit.setup do |config|
|
28
|
+
config.user_model_name = 'User'
|
29
|
+
end
|
28
30
|
rule = Merit::Rule.new
|
29
31
|
rule.to = :action_user
|
30
32
|
action = Merit::Action.new(user_id: 22)
|
@@ -40,7 +42,9 @@ describe Merit::TargetFinder do
|
|
40
42
|
|
41
43
|
describe 'when user does not exist' do
|
42
44
|
it 'should return warn and return an empty array' do
|
43
|
-
Merit.
|
45
|
+
Merit.setup do |config|
|
46
|
+
config.user_model_name = 'User'
|
47
|
+
end
|
44
48
|
rule = Merit::Rule.new
|
45
49
|
rule.to = :action_user
|
46
50
|
action = Merit::Action.new(user_id: 22)
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tute Costa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ambry
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 3.2.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: capybara
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: simplecov
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest-rails
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
@@ -101,6 +101,7 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- CHANGELOG.md
|
104
105
|
- Gemfile
|
105
106
|
- MIT-LICENSE
|
106
107
|
- README.md
|
@@ -111,14 +112,18 @@ files:
|
|
111
112
|
- app/models/merit/badge.rb
|
112
113
|
- lib/generators/active_record/install_generator.rb
|
113
114
|
- lib/generators/active_record/merit_generator.rb
|
115
|
+
- lib/generators/active_record/remove_generator.rb
|
114
116
|
- lib/generators/active_record/templates/add_fields_to_model.rb
|
115
117
|
- lib/generators/active_record/templates/create_badges_sashes.rb
|
116
118
|
- lib/generators/active_record/templates/create_merit_actions.rb
|
117
119
|
- lib/generators/active_record/templates/create_merit_activity_logs.rb
|
118
120
|
- lib/generators/active_record/templates/create_sashes.rb
|
119
121
|
- lib/generators/active_record/templates/create_scores_and_points.rb
|
122
|
+
- lib/generators/active_record/templates/remove_fields_from_model.rb
|
123
|
+
- lib/generators/active_record/templates/remove_merit_tables.rb
|
120
124
|
- lib/generators/merit/install_generator.rb
|
121
125
|
- lib/generators/merit/merit_generator.rb
|
126
|
+
- lib/generators/merit/remove_generator.rb
|
122
127
|
- lib/generators/merit/templates/merit.rb
|
123
128
|
- lib/generators/merit/templates/merit_badge_rules.rb
|
124
129
|
- lib/generators/merit/templates/merit_point_rules.rb
|
@@ -133,8 +138,6 @@ files:
|
|
133
138
|
- lib/merit/models/active_record/merit/badges_sash.rb
|
134
139
|
- lib/merit/models/active_record/merit/sash.rb
|
135
140
|
- lib/merit/models/active_record/merit/score.rb
|
136
|
-
- lib/merit/models/mongo_mapper/merit/action.rb
|
137
|
-
- lib/merit/models/mongo_mapper/sash.rb
|
138
141
|
- lib/merit/models/mongoid/merit/action.rb
|
139
142
|
- lib/merit/models/mongoid/sash.rb
|
140
143
|
- lib/merit/observer.rb
|
@@ -283,17 +286,17 @@ require_paths:
|
|
283
286
|
- lib
|
284
287
|
required_ruby_version: !ruby/object:Gem::Requirement
|
285
288
|
requirements:
|
286
|
-
- -
|
289
|
+
- - ">="
|
287
290
|
- !ruby/object:Gem::Version
|
288
291
|
version: 1.9.2
|
289
292
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
290
293
|
requirements:
|
291
|
-
- -
|
294
|
+
- - ">="
|
292
295
|
- !ruby/object:Gem::Version
|
293
296
|
version: '0'
|
294
297
|
requirements: []
|
295
298
|
rubyforge_project:
|
296
|
-
rubygems_version: 2.0
|
299
|
+
rubygems_version: 2.2.0
|
297
300
|
signing_key:
|
298
301
|
specification_version: 4
|
299
302
|
summary: General reputation Rails engine.
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Merit
|
2
|
-
class Action
|
3
|
-
include MongoMapper::Document
|
4
|
-
|
5
|
-
key :user_id, String
|
6
|
-
key :action_method, String
|
7
|
-
key :action_value, Integer
|
8
|
-
key :had_errors, Boolean
|
9
|
-
key :target_model, String
|
10
|
-
key :target_id, String
|
11
|
-
key :processed, Boolean, default: false
|
12
|
-
key :log, String
|
13
|
-
timestamps!
|
14
|
-
end
|
15
|
-
end
|