merit 1.5.0 → 1.6.0
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/Gemfile +13 -1
- data/README.md +10 -10
- data/UPGRADING.md +14 -0
- data/app/models/merit/action.rb +9 -10
- data/app/models/merit/badge.rb +9 -6
- data/lib/generators/merit/templates/merit.rb +6 -2
- data/lib/merit.rb +3 -2
- data/lib/merit/controller_extensions.rb +10 -9
- data/lib/merit/judge.rb +9 -15
- data/lib/merit/model_additions.rb +6 -6
- data/lib/merit/models/active_record/merit/action.rb +4 -2
- data/lib/merit/models/active_record/merit/activity_log.rb +3 -1
- data/lib/merit/models/active_record/merit/badges_sash.rb +6 -2
- data/lib/merit/models/active_record/merit/sash.rb +8 -8
- data/lib/merit/models/active_record/merit/score.rb +7 -3
- data/lib/merit/models/mongo_mapper/merit/action.rb +1 -1
- data/lib/merit/models/mongo_mapper/sash.rb +1 -0
- data/lib/merit/models/mongoid/merit/action.rb +4 -4
- data/lib/merit/models/mongoid/sash.rb +1 -1
- data/lib/merit/observer.rb +13 -0
- data/lib/merit/rule.rb +1 -1
- data/lib/merit/rules_badge_methods.rb +2 -2
- data/lib/merit/rules_matcher.rb +24 -0
- data/lib/merit/rules_rank_methods.rb +12 -8
- data/lib/merit/target_finder.rb +12 -9
- data/merit.gemspec +2 -5
- data/test/dummy/app/controllers/api/users_controller.rb +5 -0
- data/test/dummy/app/controllers/comments_controller.rb +15 -49
- data/test/dummy/app/controllers/registrations_controller.rb +7 -1
- data/test/dummy/app/controllers/users_controller.rb +11 -40
- data/test/dummy/app/models/comment.rb +3 -1
- data/test/dummy/app/models/merit/badge_rules.rb +11 -8
- data/test/dummy/app/models/merit/point_rules.rb +4 -4
- data/test/dummy/app/models/merit/rank_rules.rb +1 -1
- data/test/dummy/app/models/user.rb +3 -1
- data/test/dummy/app/views/admin/users/index.html.erb +1 -1
- data/test/dummy/app/views/comments/index.html.erb +1 -1
- data/test/dummy/app/views/users/index.html.erb +1 -1
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/environments/development.rb +2 -3
- data/test/dummy/config/environments/production.rb +2 -0
- data/test/dummy/config/environments/test.rb +2 -3
- data/test/dummy/config/initializers/merit.rb +27 -24
- data/test/dummy/config/initializers/secret_token.rb +6 -1
- data/test/dummy/config/routes.rb +5 -2
- data/test/integration/navigation_test.rb +67 -55
- data/test/test_helper.rb +5 -20
- data/test/{base_target_finder_test.rb → unit/base_target_finder_test.rb} +1 -1
- data/test/{merit_unit_test.rb → unit/merit_unit_test.rb} +14 -32
- data/test/unit/rule_unit_test.rb +44 -0
- data/test/{sash_finder_test.rb → unit/sash_finder_test.rb} +1 -1
- data/test/{target_finder_test.rb → unit/target_finder_test.rb} +5 -5
- metadata +12 -41
- data/Gemfile.lock +0 -146
data/test/test_helper.rb
CHANGED
@@ -12,11 +12,8 @@ SimpleCov.adapters.define 'rubygem' do
|
|
12
12
|
end
|
13
13
|
SimpleCov.start 'rubygem' if ENV["COVERAGE"]
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
else
|
18
|
-
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
19
|
-
end
|
15
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
16
|
+
|
20
17
|
require "rails/test_help"
|
21
18
|
|
22
19
|
ActionMailer::Base.delivery_method = :test
|
@@ -33,21 +30,9 @@ Capybara.default_selector = :css
|
|
33
30
|
require 'minitest/spec'
|
34
31
|
require 'minitest/autorun'
|
35
32
|
require 'minitest/mock'
|
36
|
-
require
|
37
|
-
|
38
|
-
|
39
|
-
class ActiveSupport::TestCase
|
40
|
-
def teardown
|
41
|
-
Mongoid.database.collections.each do |collection|
|
42
|
-
collection.remove unless collection.name =~ /^system\./
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
else # ActiveRecord
|
47
|
-
# Run any available migration
|
48
|
-
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
49
|
-
end
|
33
|
+
require 'mocha/setup'
|
34
|
+
|
35
|
+
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
50
36
|
|
51
37
|
# Load support files
|
52
38
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
53
|
-
|
@@ -20,7 +20,7 @@ describe Merit::BaseTargetFinder do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
describe 'rule has no model_name' do
|
23
|
-
it
|
23
|
+
it 'should fall back to the action#target_model' do
|
24
24
|
rule = Merit::Rule.new
|
25
25
|
rule.to = :itself
|
26
26
|
action = Merit::Action.new(target_model: 'users', target_id: 3)
|
@@ -1,32 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
+
# TODO: Split different objects tests in it's own files
|
3
4
|
class MeritUnitTest < ActiveSupport::TestCase
|
4
|
-
test
|
5
|
-
rule = Merit::Rule.new
|
6
|
-
assert rule.applies?, 'empty conditions should make rule apply'
|
7
|
-
|
8
|
-
str = "string"
|
9
|
-
rule.block = lambda{|obj| obj.length < 4 }
|
10
|
-
assert !rule.applies?(str), 'block should make rule fail'
|
11
|
-
|
12
|
-
rule.block = lambda{|obj| obj.length >= 4 }
|
13
|
-
assert rule.applies?(str), 'block should make rule apply'
|
14
|
-
|
15
|
-
rule.block = lambda{|obj| true }
|
16
|
-
assert !rule.applies?, 'block needs parameter for rule to pass'
|
17
|
-
end
|
18
|
-
|
19
|
-
test "Rule#badge gets related badge or raises exception" do
|
20
|
-
rule = Merit::Rule.new
|
21
|
-
rule.badge_name = 'inexistent'
|
22
|
-
assert_raise(Merit::BadgeNotFound) { rule.badge }
|
23
|
-
|
24
|
-
badge = Merit::Badge.create(id: 98, name: 'test-badge-98')
|
25
|
-
rule.badge_name = badge.name
|
26
|
-
assert_equal Merit::Badge.find(98), rule.badge
|
27
|
-
end
|
28
|
-
|
29
|
-
test "extends only meritable ActiveRecord models" do
|
5
|
+
test 'extends only meritable ActiveRecord models' do
|
30
6
|
class User < ActiveRecord::Base
|
31
7
|
def self.columns; @columns ||= []; end
|
32
8
|
has_merit
|
@@ -39,7 +15,7 @@ class MeritUnitTest < ActiveSupport::TestCase
|
|
39
15
|
assert !Fruit.method_defined?(:points), 'other models aren\'t extended'
|
40
16
|
end
|
41
17
|
|
42
|
-
test
|
18
|
+
test 'Badges get "related_models" methods' do
|
43
19
|
class Soldier < ActiveRecord::Base
|
44
20
|
def self.columns; @columns ||= []; end
|
45
21
|
has_merit
|
@@ -52,7 +28,7 @@ class MeritUnitTest < ActiveSupport::TestCase
|
|
52
28
|
assert Merit::Badge.method_defined?(:players), 'Badge#players should be defined'
|
53
29
|
end
|
54
30
|
|
55
|
-
test
|
31
|
+
test 'Badge#last_granted returns recently granted badges' do
|
56
32
|
# Create sashes, badges and badges_sashes
|
57
33
|
sash = Merit::Sash.create
|
58
34
|
badge = Merit::Badge.create(id: 20, name: 'test-badge-21')
|
@@ -70,7 +46,7 @@ class MeritUnitTest < ActiveSupport::TestCase
|
|
70
46
|
assert_equal Merit::Badge.last_granted(since_date: 2.weeks.ago, limit: 1), [badge]
|
71
47
|
end
|
72
48
|
|
73
|
-
test
|
49
|
+
test 'Merit::Score.top_scored returns scores leaderboard' do
|
74
50
|
# Create sashes and add points
|
75
51
|
sash_1 = Merit::Sash.create
|
76
52
|
sash_1.add_points(10); sash_1.add_points(10)
|
@@ -79,10 +55,10 @@ class MeritUnitTest < ActiveSupport::TestCase
|
|
79
55
|
|
80
56
|
# Test method options
|
81
57
|
assert_equal Merit::Score.top_scored(table_name: :sashes),
|
82
|
-
[{
|
83
|
-
{
|
58
|
+
[{'sash_id'=>sash_1.id, 'sum_points'=>20, 0=>1, 1=>20},
|
59
|
+
{'sash_id'=>sash_2.id, 'sum_points'=>10, 0=>2, 1=>10}]
|
84
60
|
assert_equal Merit::Score.top_scored(table_name: :sashes, limit: 1),
|
85
|
-
[{
|
61
|
+
[{'sash_id'=>sash_1.id, 'sum_points'=>20, 0=>1, 1=>20}]
|
86
62
|
end
|
87
63
|
|
88
64
|
test 'unknown ranking raises exception' do
|
@@ -96,4 +72,10 @@ class MeritUnitTest < ActiveSupport::TestCase
|
|
96
72
|
WeirdRankRules.new.check_rank_rules
|
97
73
|
end
|
98
74
|
end
|
75
|
+
|
76
|
+
test 'Badge#custom_fields_hash saves correctly' do
|
77
|
+
Merit::Badge.create(id: 99, name: 'test-badge',
|
78
|
+
custom_fields: { key_1: 'value1' })
|
79
|
+
assert_equal 'value1', Merit::Badge.find(99).custom_fields[:key_1]
|
80
|
+
end
|
99
81
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe Merit::Rule do
|
4
|
+
before do
|
5
|
+
@rule = Merit::Rule.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#applies (with block)' do
|
9
|
+
before do
|
10
|
+
@rule.block = ->(obj) { obj.length < 4 }
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'truthy block should make rule apply' do
|
14
|
+
@rule.applies?('str').must_be :==, true
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'falsy block should make rule fail' do
|
18
|
+
@rule.applies?('string').must_be :==, false
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'block needs parameter for rule to pass' do
|
22
|
+
@rule.applies?.must_be :==, false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#applies (without block)' do
|
27
|
+
it 'empty condition should make rule apply' do
|
28
|
+
@rule.applies?.must_be :==, true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#badge' do
|
33
|
+
it 'raises exception on inexistent badge' do
|
34
|
+
@rule.badge_name = 'inexistent'
|
35
|
+
->{ @rule.badge }.must_raise Merit::BadgeNotFound
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'finds related badge' do
|
39
|
+
badge = Merit::Badge.create(id: 98, name: 'test-badge-98')
|
40
|
+
@rule.badge_name = badge.name
|
41
|
+
@rule.badge.must_be :==, Merit::Badge.find(98)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -45,7 +45,7 @@ describe Merit::TargetFinder do
|
|
45
45
|
rule.to = :action_user
|
46
46
|
action = Merit::Action.new(user_id: 22)
|
47
47
|
|
48
|
-
Rails.logger.expects(:warn).with(
|
48
|
+
Rails.logger.expects(:warn).with('[merit] no User found with id 22')
|
49
49
|
finder = Merit::TargetFinder.new(rule, action)
|
50
50
|
finder.find.must_be_empty
|
51
51
|
end
|
@@ -70,7 +70,7 @@ describe Merit::TargetFinder do
|
|
70
70
|
collection.must_include user
|
71
71
|
end
|
72
72
|
|
73
|
-
describe '
|
73
|
+
describe 'rule#to does not exist as a method on the original target' do
|
74
74
|
it 'should warn and return an empty array' do
|
75
75
|
rule = Merit::Rule.new
|
76
76
|
rule.to = :non_existent
|
@@ -80,10 +80,10 @@ describe Merit::TargetFinder do
|
|
80
80
|
comment = Comment.new
|
81
81
|
Comment.stubs(:find_by_id).with(40).returns(comment)
|
82
82
|
|
83
|
-
|
84
|
-
|
83
|
+
str = '[merit] NoMethodError on `Comment#non_existent`'
|
84
|
+
str << ' (called from Merit::TargetFinder#other_target)'
|
85
85
|
|
86
|
-
Rails.logger.expects(:warn).with(
|
86
|
+
Rails.logger.expects(:warn).with(str)
|
87
87
|
finder = Merit::TargetFinder.new(rule, action)
|
88
88
|
finder.find.must_be_empty
|
89
89
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ambry
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 3.2.
|
37
|
+
version: 3.2.0
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 3.2.
|
45
|
+
version: 3.2.0
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: sqlite3
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,38 +155,6 @@ dependencies:
|
|
155
155
|
- - '='
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: 0.13.3
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
name: bson_ext
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
163
|
-
- - ! '>='
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
166
|
-
type: :development
|
167
|
-
prerelease: false
|
168
|
-
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
|
-
requirements:
|
171
|
-
- - ! '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
- !ruby/object:Gem::Dependency
|
175
|
-
name: mongoid
|
176
|
-
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
|
-
requirements:
|
179
|
-
- - ~>
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: 2.0.0
|
182
|
-
type: :development
|
183
|
-
prerelease: false
|
184
|
-
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
|
-
requirements:
|
187
|
-
- - ~>
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: 2.0.0
|
190
158
|
description: Manage badges, points and rankings (reputation) of resources in a Rails
|
191
159
|
application.
|
192
160
|
email: tutecosta@gmail.com
|
@@ -195,7 +163,6 @@ extensions: []
|
|
195
163
|
extra_rdoc_files: []
|
196
164
|
files:
|
197
165
|
- Gemfile
|
198
|
-
- Gemfile.lock
|
199
166
|
- MIT-LICENSE
|
200
167
|
- README.md
|
201
168
|
- Rakefile
|
@@ -231,14 +198,15 @@ files:
|
|
231
198
|
- lib/merit/models/mongo_mapper/sash.rb
|
232
199
|
- lib/merit/models/mongoid/merit/action.rb
|
233
200
|
- lib/merit/models/mongoid/sash.rb
|
201
|
+
- lib/merit/observer.rb
|
234
202
|
- lib/merit/rule.rb
|
235
203
|
- lib/merit/rules_badge_methods.rb
|
204
|
+
- lib/merit/rules_matcher.rb
|
236
205
|
- lib/merit/rules_points_methods.rb
|
237
206
|
- lib/merit/rules_rank_methods.rb
|
238
207
|
- lib/merit/sash_finder.rb
|
239
208
|
- lib/merit/target_finder.rb
|
240
209
|
- merit.gemspec
|
241
|
-
- test/base_target_finder_test.rb
|
242
210
|
- test/dummy-mongoid/Rakefile
|
243
211
|
- test/dummy-mongoid/app/controllers/application_controller.rb
|
244
212
|
- test/dummy-mongoid/app/controllers/comments_controller.rb
|
@@ -293,6 +261,7 @@ files:
|
|
293
261
|
- test/dummy-mongoid/script/rails
|
294
262
|
- test/dummy/Rakefile
|
295
263
|
- test/dummy/app/controllers/admin/users_controller.rb
|
264
|
+
- test/dummy/app/controllers/api/users_controller.rb
|
296
265
|
- test/dummy/app/controllers/application_controller.rb
|
297
266
|
- test/dummy/app/controllers/comments_controller.rb
|
298
267
|
- test/dummy/app/controllers/registrations_controller.rb
|
@@ -356,11 +325,13 @@ files:
|
|
356
325
|
- test/dummy/public/stylesheets/scaffold.css
|
357
326
|
- test/dummy/script/rails
|
358
327
|
- test/integration/navigation_test.rb
|
359
|
-
- test/merit_unit_test.rb
|
360
|
-
- test/sash_finder_test.rb
|
361
328
|
- test/support/integration_case.rb
|
362
|
-
- test/target_finder_test.rb
|
363
329
|
- test/test_helper.rb
|
330
|
+
- test/unit/base_target_finder_test.rb
|
331
|
+
- test/unit/merit_unit_test.rb
|
332
|
+
- test/unit/rule_unit_test.rb
|
333
|
+
- test/unit/sash_finder_test.rb
|
334
|
+
- test/unit/target_finder_test.rb
|
364
335
|
homepage: http://github.com/tute/merit
|
365
336
|
licenses: []
|
366
337
|
post_install_message:
|
data/Gemfile.lock
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
merit (1.5.0)
|
5
|
-
ambry (~> 0.3.0)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
actionmailer (3.2.3)
|
11
|
-
actionpack (= 3.2.3)
|
12
|
-
mail (~> 2.4.4)
|
13
|
-
actionpack (3.2.3)
|
14
|
-
activemodel (= 3.2.3)
|
15
|
-
activesupport (= 3.2.3)
|
16
|
-
builder (~> 3.0.0)
|
17
|
-
erubis (~> 2.7.0)
|
18
|
-
journey (~> 1.0.1)
|
19
|
-
rack (~> 1.4.0)
|
20
|
-
rack-cache (~> 1.2)
|
21
|
-
rack-test (~> 0.6.1)
|
22
|
-
sprockets (~> 2.1.2)
|
23
|
-
activemodel (3.2.3)
|
24
|
-
activesupport (= 3.2.3)
|
25
|
-
builder (~> 3.0.0)
|
26
|
-
activerecord (3.2.3)
|
27
|
-
activemodel (= 3.2.3)
|
28
|
-
activesupport (= 3.2.3)
|
29
|
-
arel (~> 3.0.2)
|
30
|
-
tzinfo (~> 0.3.29)
|
31
|
-
activeresource (3.2.3)
|
32
|
-
activemodel (= 3.2.3)
|
33
|
-
activesupport (= 3.2.3)
|
34
|
-
activesupport (3.2.3)
|
35
|
-
i18n (~> 0.6)
|
36
|
-
multi_json (~> 1.0)
|
37
|
-
addressable (2.2.7)
|
38
|
-
ambry (0.3.1)
|
39
|
-
arel (3.0.2)
|
40
|
-
bson (1.6.2)
|
41
|
-
bson_ext (1.6.2)
|
42
|
-
bson (~> 1.6.2)
|
43
|
-
builder (3.0.0)
|
44
|
-
capybara (1.1.2)
|
45
|
-
mime-types (>= 1.16)
|
46
|
-
nokogiri (>= 1.3.3)
|
47
|
-
rack (>= 1.0.0)
|
48
|
-
rack-test (>= 0.5.4)
|
49
|
-
selenium-webdriver (~> 2.0)
|
50
|
-
xpath (~> 0.1.4)
|
51
|
-
childprocess (0.3.2)
|
52
|
-
ffi (~> 1.0.6)
|
53
|
-
erubis (2.7.0)
|
54
|
-
ffi (1.0.11)
|
55
|
-
haml (3.1.4)
|
56
|
-
hike (1.2.1)
|
57
|
-
i18n (0.6.0)
|
58
|
-
journey (1.0.3)
|
59
|
-
json (1.7.0)
|
60
|
-
libwebsocket (0.1.3)
|
61
|
-
addressable
|
62
|
-
mail (2.4.4)
|
63
|
-
i18n (>= 0.4.0)
|
64
|
-
mime-types (~> 1.16)
|
65
|
-
treetop (~> 1.4.8)
|
66
|
-
metaclass (0.0.1)
|
67
|
-
mime-types (1.18)
|
68
|
-
minitest (4.7.0)
|
69
|
-
minitest-spec (0.0.2.1)
|
70
|
-
minitest (>= 3.0)
|
71
|
-
mocha (0.13.3)
|
72
|
-
metaclass (~> 0.0.1)
|
73
|
-
mongo (1.6.2)
|
74
|
-
bson (~> 1.6.2)
|
75
|
-
mongoid (2.0.2)
|
76
|
-
activemodel (~> 3.0)
|
77
|
-
mongo (~> 1.3)
|
78
|
-
tzinfo (~> 0.3.22)
|
79
|
-
multi_json (1.3.6)
|
80
|
-
nokogiri (1.5.2)
|
81
|
-
polyglot (0.3.3)
|
82
|
-
rack (1.4.1)
|
83
|
-
rack-cache (1.2)
|
84
|
-
rack (>= 0.4)
|
85
|
-
rack-ssl (1.3.2)
|
86
|
-
rack
|
87
|
-
rack-test (0.6.1)
|
88
|
-
rack (>= 1.0)
|
89
|
-
rails (3.2.3)
|
90
|
-
actionmailer (= 3.2.3)
|
91
|
-
actionpack (= 3.2.3)
|
92
|
-
activerecord (= 3.2.3)
|
93
|
-
activeresource (= 3.2.3)
|
94
|
-
activesupport (= 3.2.3)
|
95
|
-
bundler (~> 1.0)
|
96
|
-
railties (= 3.2.3)
|
97
|
-
railties (3.2.3)
|
98
|
-
actionpack (= 3.2.3)
|
99
|
-
activesupport (= 3.2.3)
|
100
|
-
rack-ssl (~> 1.3.2)
|
101
|
-
rake (>= 0.8.7)
|
102
|
-
rdoc (~> 3.4)
|
103
|
-
thor (~> 0.14.6)
|
104
|
-
rake (10.0.4)
|
105
|
-
rdoc (3.12)
|
106
|
-
json (~> 1.4)
|
107
|
-
rubyzip (0.9.8)
|
108
|
-
selenium-webdriver (2.21.2)
|
109
|
-
childprocess (>= 0.2.5)
|
110
|
-
ffi (~> 1.0)
|
111
|
-
libwebsocket (~> 0.1.3)
|
112
|
-
multi_json (~> 1.0)
|
113
|
-
rubyzip
|
114
|
-
simplecov (0.6.4)
|
115
|
-
multi_json (~> 1.0)
|
116
|
-
simplecov-html (~> 0.5.3)
|
117
|
-
simplecov-html (0.5.3)
|
118
|
-
sprockets (2.1.3)
|
119
|
-
hike (~> 1.2)
|
120
|
-
rack (~> 1.0)
|
121
|
-
tilt (~> 1.1, != 1.3.0)
|
122
|
-
sqlite3 (1.3.6)
|
123
|
-
thor (0.14.6)
|
124
|
-
tilt (1.3.3)
|
125
|
-
treetop (1.4.10)
|
126
|
-
polyglot
|
127
|
-
polyglot (>= 0.3.1)
|
128
|
-
tzinfo (0.3.33)
|
129
|
-
xpath (0.1.4)
|
130
|
-
nokogiri (~> 1.3)
|
131
|
-
|
132
|
-
PLATFORMS
|
133
|
-
ruby
|
134
|
-
|
135
|
-
DEPENDENCIES
|
136
|
-
bson_ext
|
137
|
-
capybara
|
138
|
-
haml
|
139
|
-
merit!
|
140
|
-
minitest
|
141
|
-
minitest-spec
|
142
|
-
mocha (= 0.13.3)
|
143
|
-
mongoid (~> 2.0.0)
|
144
|
-
rails (~> 3.2.3)
|
145
|
-
simplecov
|
146
|
-
sqlite3
|