hound 0.0.1 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5124b75e28297b2fcc833c9b785afaaf30ef1a6d
4
- data.tar.gz: 243191f171a35b3d0434e19ba8a8c0b2a98d7fae
3
+ metadata.gz: 788da607d57abb6490a4ef46a87442a887e17edd
4
+ data.tar.gz: a3adbd30914bc452af590c8f5acf7bbbbf6ccab5
5
5
  SHA512:
6
- metadata.gz: 35a19f7e49986a4a5e9e5114de97f9416535f0fc53497f50e17c504f4522593f9d23e16cc860cc1a3a7b66f19a87cb32e1c8aed97030a831b568c29f4ca42002
7
- data.tar.gz: e0ce3c16219b152035deaf16e1c748f2e0dc9ff3fc72a23d891d1e51ae6c005279b2c1e7fe52f8bf333997686d14949110376c7a3def5697109c9ac5f89d7b31
6
+ metadata.gz: 548a27cd88a07f80ac75dfa0a3f5ed2e0b7b13ff553e6917949379165fd1929eb967efdae776c261c6494c99fe94d1186aaa62dd86e394c81babce1a11bff7cd
7
+ data.tar.gz: 04109465ee9387282a5fbed0b186d974b963e78ab0eedaf1f7606aa1b889f4259c0d48be9958dcf7beb5a5d08f4dc546fb187b8e7ac440a15185fe4c04be87de
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ test/dummy/db/*.sqlite3
5
5
  test/dummy/log/*.log
6
6
  test/dummy/tmp/
7
7
  test/dummy/.sass-cache
8
+ Gemfile.lock
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ rvm:
2
+ - 1.9.2
3
+ - 1.9.3
4
+ - ruby-head
5
+ - jruby-19mode
6
+ - rbx-18mode
7
+ notifications:
8
+ email:
9
+ on_success: change
10
+ on_failure: always
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2013 YOURNAME
1
+ Copyright 2013 Lee Jarvis
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -16,4 +16,78 @@ rails generate hound:install
16
16
  ```
17
17
 
18
18
  This will create a new migration file. Run `rake db:migrate` to add
19
- this table.
19
+ this table.
20
+
21
+ ## Usage
22
+
23
+ Hound will automatically track `create` `update` and `destroy` methods that
24
+ occur on your 'hounded' models. You can tell Hound which actions you'd like
25
+ to track in the `hound` method:
26
+
27
+ ```ruby
28
+ class Article < ActiveRecord::Base
29
+ hound actions: [:create, :update] # only track create/update
30
+ end
31
+ ```
32
+
33
+ Hound also adds a `hound_action` helper method to your controllers. This
34
+ allows you to set a custom action on any of your hounded models.
35
+
36
+ ```ruby
37
+ class ArticlesController < ApplicationController
38
+ def add_to_frontpage
39
+ # Does not update @article so no action will be created
40
+ @frontpage << @article
41
+ hound_action @article, 'added_to_frontpage'
42
+ end
43
+ end
44
+
45
+ @article.actions.last.action #=> 'added_to_frontpage'
46
+ ```
47
+
48
+ Hound will track the current user making these changes assuming your
49
+ application controller responds to a `current_user` method. If you have a
50
+ custom method, you can override `hound_user` to return this instead.
51
+
52
+ ```ruby
53
+ class ApplicationController < ActionController::Base
54
+ def hound_user
55
+ current_admin_user
56
+ end
57
+ end
58
+ ```
59
+
60
+ For this to work successfully you must tell Hound about your user class
61
+ (note that this value defaults to 'User' already).
62
+
63
+ ```ruby
64
+ Hound.config.user_class = 'CustomUser'
65
+ Hound.config.user_class = AdminUser # String or constant
66
+ ```
67
+
68
+ ### Cleaning up actions
69
+
70
+ With all this action creating we're doing, your database is bound to start
71
+ getting full quickly. You have two options for cleaning up after yourself,
72
+ either create a rake task:
73
+
74
+ ```ruby
75
+ task :prune_hound_actions do
76
+ Hound.actions.where('created_at < ?', 1.week.ago).delete_all
77
+ end
78
+ ```
79
+
80
+ And run it as a cron job, or you can simply limit records on a per model basis
81
+
82
+ ```ruby
83
+ class Article < ActiveRecord::Base
84
+ hound limit: 10
85
+ end
86
+ ```
87
+
88
+ Now Hound will never store more than 10 actions for an Article. You can
89
+ configure this globally through `Hound.config.limit`, too. Do note though
90
+ that adding this functionality means whenever an action is tracked, Hound
91
+ will not only create a new action, it will check and destroy any actions
92
+ outside of this limit. This requires an extra call to the database, so if
93
+ that could be an issue, using a rake task might be a better idea.
data/hound.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.files = `git ls-files`.split($/)
17
17
  s.test_files = s.files.grep(%r{^test/})
18
18
 
19
- s.add_dependency 'rails', '>= 3.2.0'
19
+ s.add_dependency 'rails', '>= 3.1.0'
20
20
 
21
21
  s.add_development_dependency 'sqlite3'
22
22
  end
@@ -4,6 +4,7 @@ class CreateHoundActions < ActiveRecord::Migration
4
4
  t.string :action, null: false
5
5
  t.string :actionable_type, null: false
6
6
  t.integer :actionable_id, null: false
7
+ t.integer :user_id
7
8
  t.datetime :created_at
8
9
  end
9
10
  add_index :hound_actions, [:actionable_type, :actionable_id]
data/lib/hound.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'hound/model'
2
2
  require 'hound/controller'
3
- require 'hound/action'
4
3
  require 'hound/config'
5
4
  require 'hound/version'
6
5
 
@@ -35,4 +34,5 @@ end
35
34
 
36
35
  ActiveSupport.on_load :active_record do
37
36
  include Hound::Model
37
+ require 'hound/action'
38
38
  end
data/lib/hound/action.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  module Hound
2
2
  class Action < ActiveRecord::Base
3
3
  self.table_name = 'hound_actions'
4
- attr_accessible :action, :actionable_id, :actionable_type
4
+ attr_accessible :action, :actionable_id, :actionable_type, :user_id
5
5
  belongs_to :actionable, polymorphic: true
6
+ belongs_to :user, class_name: Hound.config.user_class
6
7
 
7
8
  scope :created, -> { where(action: 'create') }
8
9
  scope :updated, -> { where(action: 'update') }
data/lib/hound/config.rb CHANGED
@@ -7,8 +7,20 @@ module Hound
7
7
  # An Array of actions Hound should track.
8
8
  attr_accessor :actions
9
9
 
10
+ # The String used to represent a User class (defaults to 'User').
11
+ attr_reader :user_class
12
+
13
+ # Limit actions on a global basis.
14
+ attr_accessor :limit
15
+
10
16
  def initialize
11
17
  @actions = %w'create update destroy'
18
+ @user_class = 'User'
19
+ @limit = nil
20
+ end
21
+
22
+ def user_class=(klassname)
23
+ @user_class = klassname.to_s
12
24
  end
13
25
 
14
26
  end
@@ -11,25 +11,22 @@ module Hound
11
11
  # This method should be overridden for providing custom behavour.
12
12
  def hound_user
13
13
  @hound_user ||= current_user
14
- rescue NoMethodError
14
+ rescue NameError
15
15
  nil
16
16
  end
17
17
 
18
- def hound_user_type
19
- if hound_user
20
- hound_user.class.base_class.name
21
- end
22
- end
23
-
24
18
  def hound_user_id
25
19
  hound_user.try(:id)
26
20
  end
27
21
 
28
22
  private
29
23
 
24
+ def hound_action(object, action = params[:action])
25
+ object.actions.create(action: action, user_id: hound_user_id)
26
+ end
27
+
30
28
  def set_hound_user
31
- Hound.store[:hound_user_type] = hound_user_type
32
- Hound.store[:hound_user_id] = hound_user_id
29
+ Hound.store[:current_user_id] = hound_user_id
33
30
  end
34
31
 
35
32
  end
data/lib/hound/model.rb CHANGED
@@ -23,6 +23,7 @@ module Hound
23
23
  class_attribute :hound_options
24
24
  self.hound_options = options.dup
25
25
 
26
+ # Add action hooks
26
27
  after_create :hound_create if options[:actions].include?('create')
27
28
  before_update :hound_update if options[:actions].include?('update')
28
29
  after_destroy :hound_destroy if options[:actions].include?('destroy')
@@ -34,19 +35,39 @@ module Hound
34
35
  private
35
36
 
36
37
  def hound_create
37
- actions.create! action: 'create'
38
+ attributes = default_attributes.merge(action: 'create')
39
+ actions.create! attributes
40
+ inforce_limit
38
41
  end
39
42
 
40
43
  def hound_update
41
- actions.create! action: 'update'
44
+ attributes = default_attributes.merge(action: 'update')
45
+ actions.create! attributes
46
+ inforce_limit
42
47
  end
43
48
 
44
49
  def hound_destroy
45
- Hound::Action.create(
46
- actionable_id: self.id,
47
- actionable_type: self.class.base_class.name,
48
- action: 'destroy'
49
- )
50
+ attributes = default_attributes.merge(action: 'destroy')
51
+ attributes.merge!(
52
+ actionable_id: self.id,
53
+ actionable_type: self.class.base_class.name)
54
+ Hound::Action.create(attributes)
55
+ inforce_limit
56
+ end
57
+
58
+ def default_attributes
59
+ {
60
+ user_id: Hound.store[:current_user_id]
61
+ }
62
+ end
63
+
64
+ def inforce_limit
65
+ limit = self.class.hound_options[:limit]
66
+ limit ||= Hound.config.limit
67
+ if limit and actions.size > limit
68
+ good_actions = actions.order('created_at DESC').limit(limit)
69
+ actions.where('id NOT IN (?)', good_actions.map(&:id)).delete_all
70
+ end
50
71
  end
51
72
 
52
73
  end
data/lib/hound/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hound
2
- VERSION = "0.0.1"
2
+ VERSION = '0.1.0'
3
3
  end
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class TestUserClass; end
4
+
5
+ class ConfigTest < ActiveSupport::TestCase
6
+
7
+ test 'user_class' do
8
+ assert_equal 'User', Hound.config.user_class
9
+
10
+ Hound.config.user_class = TestUserClass
11
+ assert_equal 'TestUserClass', Hound.config.user_class
12
+ end
13
+
14
+ end
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -1,3 +1,7 @@
1
1
  class ApplicationController < ActionController::Base
2
2
  protect_from_forgery
3
+
4
+ def current_user
5
+ @current_user ||= User.create! name: 'Lee'
6
+ end
3
7
  end
@@ -0,0 +1,21 @@
1
+ class ArticlesController < ApplicationController
2
+
3
+ def create
4
+ @article = Article.create(params[:article])
5
+ head :ok
6
+ end
7
+
8
+ def update
9
+ @article = Article.find(params[:id])
10
+ @article.update_attributes(params[:article])
11
+ hound_action @article, 'something_custom'
12
+ head :ok
13
+ end
14
+
15
+ def destroy
16
+ @article = Article.find(params[:id])
17
+ @article.destroy
18
+ head :ok
19
+ end
20
+
21
+ end
@@ -0,0 +1,2 @@
1
+ module ArticlesHelper
2
+ end
@@ -1,4 +1,4 @@
1
1
  class Post < ActiveRecord::Base
2
2
  attr_accessible :text
3
- hound actions: 'create'
3
+ hound actions: 'update', limit: 3
4
4
  end
@@ -1,4 +1,5 @@
1
1
  Dummy::Application.routes.draw do
2
+ resources :articles
2
3
  # The priority is based upon order of creation:
3
4
  # first created -> highest priority.
4
5
 
@@ -4,6 +4,7 @@ class CreateHoundActions < ActiveRecord::Migration
4
4
  t.string :action, null: false
5
5
  t.string :actionable_type, null: false
6
6
  t.integer :actionable_id, null: false
7
+ t.integer :user_id
7
8
  t.datetime :created_at
8
9
  end
9
10
  add_index :hound_actions, [:actionable_type, :actionable_id]
@@ -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 => 20130307183451) do
14
+ ActiveRecord::Schema.define(:version => 20130308110847) do
15
15
 
16
16
  create_table "articles", :force => true do |t|
17
17
  t.string "title"
@@ -24,10 +24,11 @@ ActiveRecord::Schema.define(:version => 20130307183451) do
24
24
  t.string "action", :null => false
25
25
  t.string "actionable_type", :null => false
26
26
  t.integer "actionable_id", :null => false
27
+ t.integer "user_id"
27
28
  t.datetime "created_at"
28
29
  end
29
30
 
30
- add_index "hound_actions", ["actionable_type", "actionable_id"], :name => "index_houndd_actions_on_actionable_type_and_actionable_id"
31
+ add_index "hound_actions", ["actionable_type", "actionable_id"], :name => "index_hound_actions_on_actionable_type_and_actionable_id"
31
32
 
32
33
  create_table "posts", :force => true do |t|
33
34
  t.text "text"
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class ArticlesControllerTest < ActionController::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class ArticlesHelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ class ControllerTest < ActionController::TestCase
4
+ tests ArticlesController
5
+
6
+ test 'creating an action' do
7
+ post :create, article_attributes
8
+ assert_equal 1, assigns(:article).actions.size
9
+ end
10
+
11
+ test 'hound_user defaults to current_user' do
12
+ post :create, article_attributes
13
+ assert_equal User.first, assigns(:article).actions.first.user
14
+ end
15
+
16
+ test 'custom actions' do
17
+ article = Article.create title: 'Salut, World!', body: 'Lorem Ipsum'
18
+ put :update, article_attributes.merge(id: article.id)
19
+ actions = assigns(:article).actions
20
+ assert_equal 3, actions.size # one to create, one to update, one custom
21
+ assert_equal 'something_custom', actions.last.action
22
+ assert_equal User.first, actions.last.user
23
+ end
24
+
25
+ private
26
+
27
+ def article_attributes
28
+ { article: { title: 'Hello, World!', body: 'Lorem Ipsum' } }
29
+ end
30
+ end
data/test/hound_test.rb CHANGED
@@ -7,7 +7,7 @@ class HoundTest < ActiveSupport::TestCase
7
7
 
8
8
  test 'hound_options' do
9
9
  assert_equal %w'create update destroy', Article.hound_options[:actions]
10
- assert_equal %w'create', Post.hound_options[:actions]
10
+ assert_equal %w'update', Post.hound_options[:actions]
11
11
  end
12
12
 
13
13
  test 'hound model creation' do
@@ -28,4 +28,12 @@ class HoundTest < ActiveSupport::TestCase
28
28
  assert_equal 'Article', action.actionable_type
29
29
  assert_equal @article.id, action.actionable_id
30
30
  end
31
+
32
+ test 'limiting actions' do
33
+ @post = Post.create! text: 'lorem ipsum'
34
+ 5.times do |n|
35
+ @post.update_attributes(text: "lorem ipsum #{n}")
36
+ end
37
+ assert_equal 3, @post.actions.size
38
+ end
31
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hound
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Jarvis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-07 00:00:00.000000000 Z
11
+ date: 2013-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.0
19
+ version: 3.1.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
- version: 3.2.0
26
+ version: 3.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -46,8 +46,8 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - .gitignore
49
+ - .travis.yml
49
50
  - Gemfile
50
- - Gemfile.lock
51
51
  - LICENSE
52
52
  - README.md
53
53
  - Rakefile
@@ -62,12 +62,17 @@ files:
62
62
  - lib/hound/model.rb
63
63
  - lib/hound/version.rb
64
64
  - lib/tasks/hound_tasks.rake
65
+ - test/config_test.rb
65
66
  - test/dummy/README.rdoc
66
67
  - test/dummy/Rakefile
67
68
  - test/dummy/app/assets/javascripts/application.js
69
+ - test/dummy/app/assets/javascripts/articles.js
68
70
  - test/dummy/app/assets/stylesheets/application.css
71
+ - test/dummy/app/assets/stylesheets/articles.css
69
72
  - test/dummy/app/controllers/application_controller.rb
73
+ - test/dummy/app/controllers/articles_controller.rb
70
74
  - test/dummy/app/helpers/application_helper.rb
75
+ - test/dummy/app/helpers/articles_helper.rb
71
76
  - test/dummy/app/mailers/.gitkeep
72
77
  - test/dummy/app/models/.gitkeep
73
78
  - test/dummy/app/models/article.rb
@@ -92,8 +97,8 @@ files:
92
97
  - test/dummy/config/routes.rb
93
98
  - test/dummy/db/migrate/20130307165752_create_users.rb
94
99
  - test/dummy/db/migrate/20130307165837_create_articles.rb
95
- - test/dummy/db/migrate/20130307175522_create_persued_actions.rb
96
100
  - test/dummy/db/migrate/20130307183451_create_posts.rb
101
+ - test/dummy/db/migrate/20130308110847_create_hound_actions.rb
97
102
  - test/dummy/db/schema.rb
98
103
  - test/dummy/lib/assets/.gitkeep
99
104
  - test/dummy/log/.gitkeep
@@ -105,9 +110,12 @@ files:
105
110
  - test/dummy/test/fixtures/articles.yml
106
111
  - test/dummy/test/fixtures/posts.yml
107
112
  - test/dummy/test/fixtures/users.yml
113
+ - test/dummy/test/functional/articles_controller_test.rb
108
114
  - test/dummy/test/unit/article_test.rb
115
+ - test/dummy/test/unit/helpers/articles_helper_test.rb
109
116
  - test/dummy/test/unit/post_test.rb
110
117
  - test/dummy/test/unit/user_test.rb
118
+ - test/functional/controller_test.rb
111
119
  - test/hound_test.rb
112
120
  - test/test_helper.rb
113
121
  homepage: https://github.com/injekt/hound
@@ -134,12 +142,17 @@ signing_key:
134
142
  specification_version: 4
135
143
  summary: Trace changes to your models
136
144
  test_files:
145
+ - test/config_test.rb
137
146
  - test/dummy/README.rdoc
138
147
  - test/dummy/Rakefile
139
148
  - test/dummy/app/assets/javascripts/application.js
149
+ - test/dummy/app/assets/javascripts/articles.js
140
150
  - test/dummy/app/assets/stylesheets/application.css
151
+ - test/dummy/app/assets/stylesheets/articles.css
141
152
  - test/dummy/app/controllers/application_controller.rb
153
+ - test/dummy/app/controllers/articles_controller.rb
142
154
  - test/dummy/app/helpers/application_helper.rb
155
+ - test/dummy/app/helpers/articles_helper.rb
143
156
  - test/dummy/app/mailers/.gitkeep
144
157
  - test/dummy/app/models/.gitkeep
145
158
  - test/dummy/app/models/article.rb
@@ -164,8 +177,8 @@ test_files:
164
177
  - test/dummy/config/routes.rb
165
178
  - test/dummy/db/migrate/20130307165752_create_users.rb
166
179
  - test/dummy/db/migrate/20130307165837_create_articles.rb
167
- - test/dummy/db/migrate/20130307175522_create_persued_actions.rb
168
180
  - test/dummy/db/migrate/20130307183451_create_posts.rb
181
+ - test/dummy/db/migrate/20130308110847_create_hound_actions.rb
169
182
  - test/dummy/db/schema.rb
170
183
  - test/dummy/lib/assets/.gitkeep
171
184
  - test/dummy/log/.gitkeep
@@ -177,8 +190,11 @@ test_files:
177
190
  - test/dummy/test/fixtures/articles.yml
178
191
  - test/dummy/test/fixtures/posts.yml
179
192
  - test/dummy/test/fixtures/users.yml
193
+ - test/dummy/test/functional/articles_controller_test.rb
180
194
  - test/dummy/test/unit/article_test.rb
195
+ - test/dummy/test/unit/helpers/articles_helper_test.rb
181
196
  - test/dummy/test/unit/post_test.rb
182
197
  - test/dummy/test/unit/user_test.rb
198
+ - test/functional/controller_test.rb
183
199
  - test/hound_test.rb
184
200
  - test/test_helper.rb
data/Gemfile.lock DELETED
@@ -1,98 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- hound (0.0.1)
5
- rails (>= 3.2.0)
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- actionmailer (3.2.13.rc2)
11
- actionpack (= 3.2.13.rc2)
12
- mail (~> 2.5.3)
13
- actionpack (3.2.13.rc2)
14
- activemodel (= 3.2.13.rc2)
15
- activesupport (= 3.2.13.rc2)
16
- builder (~> 3.0.0)
17
- erubis (~> 2.7.0)
18
- journey (~> 1.0.4)
19
- rack (~> 1.4.5)
20
- rack-cache (~> 1.2)
21
- rack-test (~> 0.6.1)
22
- sprockets (~> 2.2.1)
23
- activemodel (3.2.13.rc2)
24
- activesupport (= 3.2.13.rc2)
25
- builder (~> 3.0.0)
26
- activerecord (3.2.13.rc2)
27
- activemodel (= 3.2.13.rc2)
28
- activesupport (= 3.2.13.rc2)
29
- arel (~> 3.0.2)
30
- tzinfo (~> 0.3.29)
31
- activeresource (3.2.13.rc2)
32
- activemodel (= 3.2.13.rc2)
33
- activesupport (= 3.2.13.rc2)
34
- activesupport (3.2.13.rc2)
35
- i18n (= 0.6.1)
36
- multi_json (~> 1.0)
37
- arel (3.0.2)
38
- builder (3.0.4)
39
- erubis (2.7.0)
40
- hike (1.2.1)
41
- i18n (0.6.1)
42
- journey (1.0.4)
43
- jquery-rails (2.2.1)
44
- railties (>= 3.0, < 5.0)
45
- thor (>= 0.14, < 2.0)
46
- json (1.7.7)
47
- mail (2.5.3)
48
- i18n (>= 0.4.0)
49
- mime-types (~> 1.16)
50
- treetop (~> 1.4.8)
51
- mime-types (1.21)
52
- multi_json (1.6.1)
53
- polyglot (0.3.3)
54
- rack (1.4.5)
55
- rack-cache (1.2)
56
- rack (>= 0.4)
57
- rack-ssl (1.3.3)
58
- rack
59
- rack-test (0.6.2)
60
- rack (>= 1.0)
61
- rails (3.2.13.rc2)
62
- actionmailer (= 3.2.13.rc2)
63
- actionpack (= 3.2.13.rc2)
64
- activerecord (= 3.2.13.rc2)
65
- activeresource (= 3.2.13.rc2)
66
- activesupport (= 3.2.13.rc2)
67
- bundler (~> 1.0)
68
- railties (= 3.2.13.rc2)
69
- railties (3.2.13.rc2)
70
- actionpack (= 3.2.13.rc2)
71
- activesupport (= 3.2.13.rc2)
72
- rack-ssl (~> 1.3.2)
73
- rake (>= 0.8.7)
74
- rdoc (~> 3.4)
75
- thor (>= 0.14.6, < 2.0)
76
- rake (10.0.3)
77
- rdoc (3.12.2)
78
- json (~> 1.4)
79
- sprockets (2.2.2)
80
- hike (~> 1.2)
81
- multi_json (~> 1.0)
82
- rack (~> 1.0)
83
- tilt (~> 1.1, != 1.3.0)
84
- sqlite3 (1.3.7)
85
- thor (0.17.0)
86
- tilt (1.3.4)
87
- treetop (1.4.12)
88
- polyglot
89
- polyglot (>= 0.3.1)
90
- tzinfo (0.3.36)
91
-
92
- PLATFORMS
93
- ruby
94
-
95
- DEPENDENCIES
96
- hound!
97
- jquery-rails
98
- sqlite3