hubstats 0.0.23 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzJjMjY4ZGFkODdlOTE1ZWUyYjM1MmNmNDYyNzI0NzRjNDJkNWVjYQ==
5
- data.tar.gz: !binary |-
6
- NjMyOTljYzMzYzFmMmNkZTlkNzc2NTc1MjAyYjVmZGZhNTc4NDAyNA==
2
+ SHA1:
3
+ metadata.gz: 7f4f31e5446aafe650ec92ff84fb84ae38446309
4
+ data.tar.gz: 0f4f0430f62ca6c14a3574ec97eaa365debf321a
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDBiYjUxZDAyNjRlN2MwNzNkNzlhNzM5ZWI2ZmM5MDBjNTVlMTI5ZjFhMzU5
10
- NjZmYTNiZGUxNDFhZWQzNmNiYmU4Njc5YWYyMjU1ZTc5OTIyYjJhZWNkNjkw
11
- ZTI5Nzc2YzJhYjNjMDk1ODRmZjRiZDQ3NTdjMmViY2Q0Nzc0Yzg=
12
- data.tar.gz: !binary |-
13
- OGFmNWI3ZWE2ZTJjMWU2MzJjMDc4MDhiZWNiMDlmNWVlNTliNzM4OTY3Yzc1
14
- ZDMzNjEyZjU0ZmZiNmFmMDdkMDNjNjQ5NzdjNDRmMjVlMTYzNGQxMGUyMjE5
15
- MDBmMTFiNjQ4MTRiNDAwYTY1Yjg1ZDBlMTE1NjQ3NTlmYmViMzA=
6
+ metadata.gz: 9ffb40c3b610b9f4292a171a062f0b0dfda63a2268c326005be0308900d3739b78dccd75ce17fccfbe8eafde6f0ff83fe14a2b47d87f121895b430e20acb90ed
7
+ data.tar.gz: efeb154473f4b8a250c3ef3e4907ddeacbe6a03d415893f2c704e02e7a2187e90bfb5ff6fffa449cba97ff3945172e2faff0a727eb68b765ef1cd61ba9851583
data/.gitignore CHANGED
@@ -9,3 +9,4 @@ test/dummy/db/migrate/*
9
9
  .config
10
10
  .DS_Store
11
11
  .gitkeep
12
+ Gemfile.lock
@@ -16,6 +16,10 @@ $(document).ready(function() {
16
16
  updateQueryStringParameter(queryParameters,"order",$(this).attr('id'));
17
17
  });
18
18
 
19
+ $("#group-by").on("change", function(){
20
+ updateQueryStringParameter(queryParameters,"group",$(this)[0].value);
21
+ });
22
+
19
23
  $("#repos").change(function() {
20
24
  var ids = $("#repos").val();
21
25
  updateQueryStringParameter(queryParameters,"repos",ids);
@@ -53,7 +57,7 @@ function getUrlVars() {
53
57
  for (var i = 0; i < hashes.length; i++) {
54
58
  hash = hashes[i].split('=');
55
59
  vars.push(hash[0]);
56
- vars[hash[0]] = hash[1];
60
+ vars[hash[0]] = hash[1].replace(/%20/g,' ').replace(/%2C/g,',');
57
61
  }
58
62
  }
59
63
 
@@ -70,11 +74,14 @@ function setDefaults(queryParameters) {
70
74
  $('#' + queryParameters["order"]).addClass('active');
71
75
  else
72
76
  $('#desc').addClass('active');
77
+
78
+ if (queryParameters["group"])
79
+ $('#group-by').val(queryParameters["group"]);
73
80
  }
74
81
 
75
82
  function initLabels (queryParameters) {
76
83
  if (queryParameters["label"]) {
77
- var labels = queryParameters["label"].replace('%20',' ').split(',');
84
+ var labels = queryParameters["label"].split(',');
78
85
 
79
86
  $("#labels-container .btn-label").each( function() {
80
87
  var color = '#' + $(this).data("color");
@@ -6,7 +6,7 @@ $(document).ready(function() {
6
6
  placeholder: "Repositories",
7
7
  multiple: true,
8
8
  ajax: {
9
- url: "./repos",
9
+ url: getPath("repo"),
10
10
  dataType: 'json',
11
11
  quietMillis: 100,
12
12
  data: function (term) {
@@ -27,7 +27,7 @@ $(document).ready(function() {
27
27
  },
28
28
  initSelection: function(element, callback) {
29
29
  if (reposIDs !== "") {
30
- $.ajax("./repos", {
30
+ $.ajax(getPath("repo"), {
31
31
  data: { id: reposIDs },
32
32
  dataType: "json"
33
33
  }).done(function (data) { callback(
@@ -48,7 +48,7 @@ $(document).ready(function() {
48
48
  placeholder: "Users",
49
49
  multiple: true,
50
50
  ajax: {
51
- url: "./users",
51
+ url: getPath("user"),
52
52
  dataType: 'json',
53
53
  quietMillis: 100,
54
54
  data: function (term) {
@@ -69,7 +69,7 @@ $(document).ready(function() {
69
69
  },
70
70
  initSelection: function(element, callback) {
71
71
  if (usersIDs !== "") {
72
- $.ajax("./users", {
72
+ $.ajax( getPath("user"), {
73
73
  data: { id: usersIDs },
74
74
  dataType: "json"
75
75
  }).done(function (data) { callback(
@@ -84,5 +84,12 @@ $(document).ready(function() {
84
84
  }
85
85
  }
86
86
  }).select2('val', []);
87
+ });
87
88
 
88
- });
89
+
90
+ function getPath (model) {
91
+ if (model == 'user') {
92
+ return $("#brand").attr('data-user-path');}
93
+ else if (model == 'repo')
94
+ return $("#brand").attr('data-repo-path');
95
+ };
@@ -89,6 +89,13 @@
89
89
  border-bottom: 1px solid #ccc;
90
90
  }
91
91
 
92
+ .single-pull.group-header {
93
+ padding: 10px;
94
+ background-color: #F5F5F5;
95
+ }
96
+ .group-header > h3{
97
+ margin: 0px;
98
+ }
92
99
  .comment-info > .well {
93
100
  word-wrap: break-word;
94
101
  padding: 10px;
@@ -6,19 +6,26 @@ module Hubstats
6
6
  def index
7
7
  URI.decode(params[:label]) if params[:label]
8
8
 
9
- @pull_requests = Hubstats::PullRequest
9
+ pull_ids = Hubstats::PullRequest
10
10
  .belonging_to_users(params[:users])
11
11
  .belonging_to_repos(params[:repos])
12
12
  .with_state(params[:state])
13
- .state_based_order(@timespan,params[:state],params[:order])
14
-
15
- pull_ids =@pull_requests.map(&:id)
13
+ .map(&:id)
16
14
 
17
15
  @labels = Hubstats::Label.with_a_pull_request(pull_ids).order("pull_request_count DESC")
18
- @pull_requests = @pull_requests
19
- .includes(:user).includes(:repo)
20
- .with_label(params[:label]).distinct
16
+
17
+ @pull_requests = Hubstats::PullRequest.includes(:user).includes(:repo)
18
+ .belonging_to_users(params[:users]).belonging_to_repos(params[:repos])
19
+ .group_by(params[:group]).with_label(params[:label])
20
+ .state_based_order(@timespan,params[:state],params[:order])
21
21
  .paginate(:page => params[:page], :per_page => 15)
22
+
23
+ if params[:group] == 'user'
24
+ @groups = @pull_requests.to_a.group_by(&:user_name)
25
+ elsif params[:group] == 'repo'
26
+ @groups = @pull_requests.to_a.group_by(&:repo_name)
27
+ end
28
+
22
29
  end
23
30
 
24
31
  def show
@@ -9,7 +9,7 @@ module Hubstats
9
9
  .group("hubstats_labels.id")
10
10
  }
11
11
 
12
- scope :with_ids, lambda { |pull_ids| (where("hubstats_labels_pull_requests.pull_request_id" => pull_ids)) unless pull_ids.blank? }
12
+ scope :with_ids, lambda { |pull_ids| (where("hubstats_labels_pull_requests.pull_request_id" => pull_ids)) }
13
13
 
14
14
  scope :with_state, lambda {|state| (where(state: state) unless state == 'all') if state}
15
15
 
@@ -1,16 +1,18 @@
1
1
  module Hubstats
2
2
  class PullRequest < ActiveRecord::Base
3
-
4
3
  scope :closed_since, lambda {|time| where("closed_at > ?", time) }
5
4
  scope :updated_since, lambda {|time| where("updated_at > ?", time) }
6
- scope :opened_since, lambda {|time| where("created_at > ?", time) }
5
+ scope :opened_since, lambda {|time| where("hubstats_pull_requests.created_at > ?", time) }
7
6
  scope :belonging_to_repo, lambda {|repo_id| where(repo_id: repo_id)}
8
7
  scope :belonging_to_user, lambda {|user_id| where(user_id: user_id)}
9
8
  scope :belonging_to_repos, lambda {|repo_id| where(repo_id: repo_id.split(',')) if repo_id}
10
9
  scope :belonging_to_users, lambda {|user_id| where(user_id: user_id.split(',')) if user_id}
10
+ scope :group, lambda {|group| group_by(:repo_id) if group }
11
11
  scope :with_state, lambda {|state| (where(state: state) unless state == 'all') if state}
12
12
  scope :with_label, lambda { |label_name| ({ :joins => :labels, :conditions => {:hubstats_labels => {name: label_name.split(',')} } }) if label_name }
13
13
  scope :distinct, select("DISTINCT hubstats_pull_requests.*")
14
+ scope :with_repo_name, select('DISTINCT hubstats_repos.name as repo_name, hubstats_pull_requests.*').joins("LEFT JOIN hubstats_repos ON hubstats_repos.id = hubstats_pull_requests.repo_id")
15
+ scope :with_user_name, select('DISTINCT hubstats_users.login as user_name, hubstats_pull_requests.*').joins("LEFT JOIN hubstats_users ON hubstats_users.id = hubstats_pull_requests.user_id")
14
16
 
15
17
  attr_accessible :id, :url, :html_url, :diff_url, :patch_url, :issue_url, :commits_url,
16
18
  :review_comments_url, :review_comment_url, :comments_url, :statuses_url, :number,
@@ -46,11 +48,20 @@ module Hubstats
46
48
 
47
49
  def self.state_based_order(timespan,state,order)
48
50
  order = ["ASC","DESC"].detect{|order_type| order_type.to_s == order.to_s.upcase } || "DESC"
49
-
50
51
  if state == "closed"
51
- closed_since(timespan).order("closed_at #{order}")
52
+ with_state(state).closed_since(timespan).order("hubstats_pull_requests.closed_at #{order}")
53
+ else
54
+ with_state(state).opened_since(timespan).order("hubstats_pull_requests.created_at #{order}")
55
+ end
56
+ end
57
+
58
+ def self.group_by(group)
59
+ if group == 'user'
60
+ with_user_name.order("user_name ASC")
61
+ elsif group == 'repo'
62
+ with_repo_name.order("repo_name asc")
52
63
  else
53
- opened_since(timespan).order("created_at #{order}")
64
+ scoped
54
65
  end
55
66
  end
56
67
 
@@ -9,7 +9,7 @@
9
9
  <span class="icon-bar"></span>
10
10
  <span class="icon-bar"></span>
11
11
  </button>
12
- <a class="navbar-brand title" href="/">Hubstats</a>
12
+ <%= link_to "Hubstats", root_path, {:data => {:repo_path => repos_path(), :user_path => users_path()}, :class => "navbar-brand title", :id =>"brand"} %>
13
13
  </div>
14
14
 
15
15
  <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
@@ -47,11 +47,16 @@
47
47
  </label>
48
48
  </div>
49
49
 
50
- <%= render 'hubstats/tables/pulls' %>
51
-
50
+ <select id="group-by" class="form-control pull-right" style="width: 100px; display: inline; ">
51
+ <option value="">Group By</option>
52
+ <option value="user">User</option>
53
+ <option value="repo">Repo</option>
54
+ </select>
52
55
 
56
+ <%= render 'hubstats/tables/grouped_pulls' %>
57
+
53
58
  <div class="text-center">
54
- <%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
59
+ <%= will_paginate @pull_requests, renderer: BootstrapPagination::Rails %>
55
60
  </div>
56
61
 
57
62
  </div>
@@ -0,0 +1,17 @@
1
+ <% if @pull_requests.length > 0 %>
2
+ <% if @groups %>
3
+ <% @groups.each do |group| %>
4
+ <div class="pulls">
5
+ <div class="row single-pull group-header">
6
+ <h3> <%= group[0] %> </h3>
7
+ </div>
8
+ <%= render partial: 'hubstats/partials/pull', collection: group[1], as: :pull %>
9
+ </div>
10
+ <% end %>
11
+ <% else %>
12
+ <%= render 'hubstats/tables/pulls' %>
13
+ <% end %>
14
+ <% else %>
15
+ <p> No pull requests to show </p>
16
+ <% end %>
17
+
@@ -1,3 +1,3 @@
1
1
  module Hubstats
2
- VERSION = "0.0.23"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubstats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elliot Hursh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-04 00:00:00.000000000 Z
11
+ date: 2014-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.2.18
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: 3.2.18
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: octokit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.2'
34
34
  type: :runtime
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'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: will_paginate-bootstrap
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: :runtime
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: select2-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.5'
62
62
  type: :runtime
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: '3.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 3.0.0.beta
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: 3.0.0.beta
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: shoulda-matchers
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '2.6'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.6'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: factory_girl_rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '4.4'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '4.4'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: faker
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '1.3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.3'
125
125
  description: Github Statistics
@@ -129,12 +129,11 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - .automation.yml
133
- - .gitignore
134
- - .rspec
135
- - .travis.yml
132
+ - ".automation.yml"
133
+ - ".gitignore"
134
+ - ".rspec"
135
+ - ".travis.yml"
136
136
  - Gemfile
137
- - Gemfile.lock
138
137
  - MIT-LICENSE
139
138
  - README.rdoc
140
139
  - Rakefile
@@ -188,6 +187,7 @@ files:
188
187
  - app/views/hubstats/repos/show.html.erb
189
188
  - app/views/hubstats/tables/_comments-condensed.html.erb
190
189
  - app/views/hubstats/tables/_comments.html.erb
190
+ - app/views/hubstats/tables/_grouped_pulls.html.erb
191
191
  - app/views/hubstats/tables/_pulls-condensed.html.erb
192
192
  - app/views/hubstats/tables/_pulls.html.erb
193
193
  - app/views/hubstats/tables/_repos-condensed.html.erb
@@ -282,12 +282,12 @@ require_paths:
282
282
  - lib
283
283
  required_ruby_version: !ruby/object:Gem::Requirement
284
284
  requirements:
285
- - - ! '>='
285
+ - - ">="
286
286
  - !ruby/object:Gem::Version
287
287
  version: '0'
288
288
  required_rubygems_version: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - ! '>='
290
+ - - ">="
291
291
  - !ruby/object:Gem::Version
292
292
  version: '0'
293
293
  requirements: []
data/Gemfile.lock DELETED
@@ -1,144 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- hubstats (0.0.20)
5
- octokit (~> 3.2)
6
- rails (~> 3.2.18)
7
- select2-rails (~> 3.5)
8
- will_paginate-bootstrap
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- actionmailer (3.2.19)
14
- actionpack (= 3.2.19)
15
- mail (~> 2.5.4)
16
- actionpack (3.2.19)
17
- activemodel (= 3.2.19)
18
- activesupport (= 3.2.19)
19
- builder (~> 3.0.0)
20
- erubis (~> 2.7.0)
21
- journey (~> 1.0.4)
22
- rack (~> 1.4.5)
23
- rack-cache (~> 1.2)
24
- rack-test (~> 0.6.1)
25
- sprockets (~> 2.2.1)
26
- activemodel (3.2.19)
27
- activesupport (= 3.2.19)
28
- builder (~> 3.0.0)
29
- activerecord (3.2.19)
30
- activemodel (= 3.2.19)
31
- activesupport (= 3.2.19)
32
- arel (~> 3.0.2)
33
- tzinfo (~> 0.3.29)
34
- activeresource (3.2.19)
35
- activemodel (= 3.2.19)
36
- activesupport (= 3.2.19)
37
- activesupport (3.2.19)
38
- i18n (~> 0.6, >= 0.6.4)
39
- multi_json (~> 1.0)
40
- addressable (2.3.6)
41
- arel (3.0.3)
42
- builder (3.0.4)
43
- diff-lcs (1.2.5)
44
- erubis (2.7.0)
45
- factory_girl (4.4.0)
46
- activesupport (>= 3.0.0)
47
- factory_girl_rails (4.4.1)
48
- factory_girl (~> 4.4.0)
49
- railties (>= 3.0.0)
50
- faker (1.4.1)
51
- i18n (~> 0.5)
52
- faraday (0.9.0)
53
- multipart-post (>= 1.2, < 3)
54
- hike (1.2.3)
55
- i18n (0.6.11)
56
- journey (1.0.4)
57
- jquery-rails (3.1.1)
58
- railties (>= 3.0, < 5.0)
59
- thor (>= 0.14, < 2.0)
60
- json (1.8.1)
61
- mail (2.5.4)
62
- mime-types (~> 1.16)
63
- treetop (~> 1.4.8)
64
- mime-types (1.25.1)
65
- multi_json (1.10.1)
66
- multipart-post (2.0.0)
67
- mysql2 (0.3.16)
68
- octokit (3.2.0)
69
- sawyer (~> 0.5.3)
70
- polyglot (0.3.5)
71
- rack (1.4.5)
72
- rack-cache (1.2)
73
- rack (>= 0.4)
74
- rack-ssl (1.3.4)
75
- rack
76
- rack-test (0.6.2)
77
- rack (>= 1.0)
78
- rails (3.2.19)
79
- actionmailer (= 3.2.19)
80
- actionpack (= 3.2.19)
81
- activerecord (= 3.2.19)
82
- activeresource (= 3.2.19)
83
- activesupport (= 3.2.19)
84
- bundler (~> 1.0)
85
- railties (= 3.2.19)
86
- railties (3.2.19)
87
- actionpack (= 3.2.19)
88
- activesupport (= 3.2.19)
89
- rack-ssl (~> 1.3.2)
90
- rake (>= 0.8.7)
91
- rdoc (~> 3.4)
92
- thor (>= 0.14.6, < 2.0)
93
- rake (10.3.2)
94
- rdoc (3.12.2)
95
- json (~> 1.4)
96
- rspec-core (3.0.2)
97
- rspec-support (~> 3.0.0)
98
- rspec-expectations (3.0.2)
99
- diff-lcs (>= 1.2.0, < 2.0)
100
- rspec-support (~> 3.0.0)
101
- rspec-mocks (3.0.2)
102
- rspec-support (~> 3.0.0)
103
- rspec-rails (3.0.1)
104
- actionpack (>= 3.0)
105
- activesupport (>= 3.0)
106
- railties (>= 3.0)
107
- rspec-core (~> 3.0.0)
108
- rspec-expectations (~> 3.0.0)
109
- rspec-mocks (~> 3.0.0)
110
- rspec-support (~> 3.0.0)
111
- rspec-support (3.0.2)
112
- sawyer (0.5.4)
113
- addressable (~> 2.3.5)
114
- faraday (~> 0.8, < 0.10)
115
- select2-rails (3.5.9)
116
- thor (~> 0.14)
117
- shoulda-matchers (2.6.1)
118
- activesupport (>= 3.0.0)
119
- sprockets (2.2.2)
120
- hike (~> 1.2)
121
- multi_json (~> 1.0)
122
- rack (~> 1.0)
123
- tilt (~> 1.1, != 1.3.0)
124
- thor (0.19.1)
125
- tilt (1.4.1)
126
- treetop (1.4.15)
127
- polyglot
128
- polyglot (>= 0.3.1)
129
- tzinfo (0.3.40)
130
- will_paginate (3.0.7)
131
- will_paginate-bootstrap (1.0.1)
132
- will_paginate (>= 3.0.3)
133
-
134
- PLATFORMS
135
- ruby
136
-
137
- DEPENDENCIES
138
- factory_girl_rails (~> 4.4)
139
- faker (~> 1.3)
140
- hubstats!
141
- jquery-rails
142
- mysql2
143
- rspec-rails (~> 3.0.0.beta)
144
- shoulda-matchers (~> 2.6)