bullet 4.1.1 → 4.2.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/.gitignore CHANGED
@@ -8,4 +8,5 @@ tags
8
8
  .bundle
9
9
  *.gem
10
10
  benchmark_profile*
11
- /nbproject/private/
11
+ /nbproject/private/
12
+ Gemfile*.lock
@@ -0,0 +1,19 @@
1
+ # Use `bundle install` in order to install these gems
2
+ # Use `bundle exec rake` in order to run the specs using the bundle
3
+ source "http://rubygems.org"
4
+
5
+ gemspec
6
+
7
+ gem 'rails', github: 'rails/rails'
8
+ gem 'journey', github: 'rails/journey'
9
+ gem 'activerecord-deprecated_finders', github: 'rails/activerecord-deprecated_finders'
10
+ gem 'sqlite3'
11
+ gem 'mysql'
12
+ gem 'activerecord-import'
13
+ gem 'mongoid', github: 'slbug/mongoid'
14
+
15
+ gem "rspec"
16
+ gem "guard"
17
+ gem "guard-rspec"
18
+
19
+ gem "perftools.rb"
data/README.textile CHANGED
@@ -1,7 +1,9 @@
1
- h1. Bullet !https://gemnasium.com/flyerhzm/bullet.png?travis(Dependency Status)!:https://gemnasium.com/flyerhzm/bullet
1
+ h1. Bullet
2
2
 
3
3
  !https://secure.travis-ci.org/flyerhzm/bullet.png!:http://travis-ci.org/flyerhzm/bullet
4
4
 
5
+ !http://api.coderwall.com/flyerhzm/endorsecount.png!:http://coderwall.com/flyerhzm
6
+
5
7
  The Bullet gem is designed to help you increase your application's performance by reducing the number of queries it makes. It will watch your queries while you develop your application and notify you when you should add eager loading (N+1 queries), when you're using eager loading that isn't necessary and when you should use counter cache.
6
8
 
7
9
  Best practice is to use Bullet in development mode or custom mode (staging, profile, etc.). The last thing you want is your clients getting alerts about how lazy you are.
@@ -10,6 +12,15 @@ The Bullet gem now supports **activerecord** 2.1, 2.2, 2.3, 3.0, 3.1, 3.2 and **
10
12
 
11
13
  ****************************************************************************
12
14
 
15
+ h2. External Introduction
16
+
17
+ * "http://railscasts.com/episodes/372-bullet":http://railscasts.com/episodes/372-bullet
18
+ * "http://ruby5.envylabs.com/episodes/9-episode-8-september-8-2009":http://ruby5.envylabs.com/episodes/9-episode-8-september-8-2009
19
+ * "http://railslab.newrelic.com/2009/10/23/episode-19-on-the-edge-part-1":http://railslab.newrelic.com/2009/10/23/episode-19-on-the-edge-part-1
20
+ * "http://weblog.rubyonrails.org/2009/10/22/community-highlights":http://weblog.rubyonrails.org/2009/10/22/community-highlights
21
+
22
+ ****************************************************************************
23
+
13
24
  h2. Install
14
25
 
15
26
  You can install it as a gem:
@@ -39,17 +50,19 @@ config.after_initialize do
39
50
  :receiver => 'your_account@jabber.org',
40
51
  :show_online_status => true }
41
52
  Bullet.rails_logger = true
53
+ Bullet.airbrake = true
42
54
  Bullet.disable_browser_cache = true
43
55
  end
44
56
  </code></pre>
45
57
 
46
58
  The notifier of bullet is a wrap of "uniform_notifier":https://github.com/flyerhzm/uniform_notifier
47
59
 
48
- The code above will enable all six of the Bullet notification systems:
60
+ The code above will enable all seven of the Bullet notification systems:
49
61
  * <code>Bullet.enable</code>: enable Bullet gem, otherwise do nothing
50
62
  * <code>Bullet.alert</code>: pop up a JavaScript alert in the browser
51
63
  * <code>Bullet.bullet_logger</code>: log to the Bullet log file (Rails.root/log/bullet.log)
52
64
  * <code>Bullet.rails_logger</code>: add warnings directly to the Rails log
65
+ * <code>Bullet.airbrake</code>: add notifications to airbrake
53
66
  * <code>Bullet.console</code>: log warnings to your browser's console.log (Safari/Webkit browsers or Firefox w/Firebug installed)
54
67
  * <code>Bullet.growl</code>: pop up Growl warnings if your system has Growl installed. Requires a little bit of configuration
55
68
  * <code>Bullet.xmpp</code>: send XMPP/Jabber notifications to the receiver indicated. Note that the code will currently not handle the adding of contacts, so you will need to make both accounts indicated know each other manually before you will receive any notifications. If you restart the development server frequently, the 'coming online' sound for the bullet account may start to annoy - in this case set :show_online_status to false; you will still get notifications, but the bullet account won't announce it's online status anymore.
@@ -90,32 +103,9 @@ These two lines are notifications that unused eager loadings have been encounter
90
103
 
91
104
  ****************************************************************************
92
105
 
93
- h2. Growl Support
94
-
95
- To get Growl support up-and-running for Bullet, follow the steps below:
96
- * Install the ruby-growl gem: <code>gem install ruby-growl</code>
97
- * Open the Growl preference pane in Systems Preferences
98
- * Click the "Network" tab
99
- * Make sure both "Listen for incoming notifications" and "Allow remote application registration" are checked. *Note*: If you set a password, you will need to set <code>Bullet.growl = { :password => 'growl password' }</code> in the config file.
100
- * Restart Growl ("General" tab -> Stop Growl -> Start Growl)
101
- * Boot up your application. Bullet will automatically send a Growl notification when Growl is turned on. If you do not see it when your application loads, make sure it is enabled in your initializer and double-check the steps above.
102
-
103
- ****************************************************************************
104
-
105
- h2. Ruby 1.9 issue
106
+ h2. Growl, XMPP/Jabber and Airbrake Support
106
107
 
107
- ruby-growl gem has an issue about md5 in ruby 1.9, if you use growl and ruby 1.9, check this gist http://gist.github.com/300184
108
-
109
- ****************************************************************************
110
-
111
- h2. XMPP/Jabber Support
112
-
113
- To get XMPP support up-and-running for Bullet, follow the steps below:
114
- * Install the xmpp4r gem: <code>sudo gem install xmpp4r</code>
115
- * Make both the bullet and the receipient account add each other as contacts.
116
- This will require you to manually log into both accounts, add each other
117
- as contact and confirm each others contact request.
118
- * Boot up your application. Bullet will automatically send an XMPP notification when XMPP is turned on.
108
+ see "https://github.com/flyerhzm/uniform_notifier":https://github.com/flyerhzm/uniform_notifier
119
109
 
120
110
  ****************************************************************************
121
111
 
@@ -158,14 +148,6 @@ Don't forget enabling bullet in test environment.
158
148
 
159
149
  ****************************************************************************
160
150
 
161
- h2. Links
162
-
163
- * "http://weblog.rubyonrails.org/2009/10/22/community-highlights":http://weblog.rubyonrails.org/2009/10/22/community-highlights
164
- * "http://ruby5.envylabs.com/episodes/9-episode-8-september-8-2009":http://ruby5.envylabs.com/episodes/9-episode-8-september-8-2009
165
- * "http://railslab.newrelic.com/2009/10/23/episode-19-on-the-edge-part-1":http://railslab.newrelic.com/2009/10/23/episode-19-on-the-edge-part-1
166
-
167
- ****************************************************************************
168
-
169
151
  h2. Contributors
170
152
 
171
153
  "https://github.com/flyerhzm/bullet/contributors":https://github.com/flyerhzm/bullet/contributors
@@ -1,5 +1,9 @@
1
1
  h1. Bullet
2
2
 
3
+ !https://secure.travis-ci.org/flyerhzm/bullet.png!:http://travis-ci.org/flyerhzm/bullet
4
+
5
+ !http://api.coderwall.com/flyerhzm/endorsecount.png!:http://coderwall.com/flyerhzm
6
+
3
7
  The Bullet plugin/gem is designed to help you increase your application's performance by reducing the number of queries it makes. It will watch your queries while you develop your application and notify you when you should add eager loading (N+1 queries), when you're using eager loading that isn't necessary and when you should use counter cache.
4
8
 
5
9
  Best practice is to use Bullet in development mode or custom mode (staging, profile, etc.). The last thing you want is your clients getting alerts about how lazy you are.
data/bullet.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.required_rubygems_version = ">= 1.3.6"
17
17
 
18
- s.add_dependency "uniform_notifier", "~> 1.0.0"
18
+ s.add_dependency "uniform_notifier"
19
19
 
20
20
  s.files = `git ls-files`.split("\n")
21
21
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -24,7 +24,7 @@ module Bullet
24
24
  'active_record2'
25
25
  elsif active_record30?
26
26
  'active_record3'
27
- elsif active_record31? || active_record32?
27
+ elsif active_record31? || active_record32? || active_record4?
28
28
  'active_record31'
29
29
  end
30
30
  end
@@ -60,6 +60,10 @@ module Bullet
60
60
  ::ActiveRecord::VERSION::MAJOR == 3
61
61
  end
62
62
 
63
+ def active_record4?
64
+ ::ActiveRecord::VERSION::MAJOR == 4
65
+ end
66
+
63
67
  def active_record30?
64
68
  active_record3? && ::ActiveRecord::VERSION::MINOR == 0
65
69
  end
@@ -11,13 +11,13 @@ module Bullet
11
11
 
12
12
  def first
13
13
  result = origin_first
14
- Bullet::Detector::Association.add_impossible_object(result)
14
+ Bullet::Detector::Association.add_impossible_object(result) if result
15
15
  result
16
16
  end
17
17
 
18
18
  def last
19
19
  result = origin_last
20
- Bullet::Detector::Association.add_impossible_object(result)
20
+ Bullet::Detector::Association.add_impossible_object(result) if result
21
21
  result
22
22
  end
23
23
 
@@ -45,7 +45,9 @@ module Bullet
45
45
  alias_method :origin_set_relation, :set_relation
46
46
 
47
47
  def set_relation(name, relation)
48
- Bullet::Detector::NPlusOneQuery.call_association(self, name)
48
+ if relation && relation.metadata.macro !~ /embed/
49
+ Bullet::Detector::NPlusOneQuery.call_association(self, name)
50
+ end
49
51
  origin_set_relation(name, relation)
50
52
  end
51
53
  end
@@ -10,13 +10,13 @@ module Bullet
10
10
 
11
11
  def first
12
12
  result = origin_first
13
- Bullet::Detector::Association.add_impossible_object(result)
13
+ Bullet::Detector::Association.add_impossible_object(result) if result
14
14
  result
15
15
  end
16
16
 
17
17
  def last
18
18
  result = origin_last
19
- Bullet::Detector::Association.add_impossible_object(result)
19
+ Bullet::Detector::Association.add_impossible_object(result) if result
20
20
  result
21
21
  end
22
22
 
@@ -44,7 +44,9 @@ module Bullet
44
44
  alias_method :origin_set_relation, :set_relation
45
45
 
46
46
  def set_relation(name, relation)
47
- Bullet::Detector::NPlusOneQuery.call_association(self, name)
47
+ if relation && relation.metadata.macro !~ /embed/
48
+ Bullet::Detector::NPlusOneQuery.call_association(self, name)
49
+ end
48
50
  origin_set_relation(name, relation)
49
51
  end
50
52
  end
@@ -19,7 +19,12 @@ module Bullet
19
19
  end
20
20
 
21
21
  def whoami
22
- "user: " << `whoami`.chomp
22
+ user = `whoami`
23
+ if user
24
+ "user: #{user.chomp}"
25
+ else
26
+ ""
27
+ end
23
28
  end
24
29
 
25
30
  def body_with_caller
data/lib/bullet/rack.rb CHANGED
@@ -28,7 +28,7 @@ module Bullet
28
28
  def empty?(response)
29
29
  # response may be ["Not Found"], ["Move Permanently"], etc.
30
30
  (response.is_a?(Array) && response.size <= 1) ||
31
- !response.body.is_a?(String) || response.body.empty?
31
+ !response.respond_to?(:body) || response.body.empty?
32
32
  end
33
33
 
34
34
  # if send file?
@@ -37,7 +37,7 @@ module Bullet
37
37
  end
38
38
 
39
39
  def html_request?(headers, response)
40
- headers['Content-Type'] && headers['Content-Type'].include?('text/html') && response.body.include?("<html>")
40
+ headers['Content-Type'] && headers['Content-Type'].include?('text/html') && response.body.include?("<html")
41
41
  end
42
42
 
43
43
  def no_browser_cache(headers)
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Bullet
3
- VERSION = "4.1.1"
3
+ VERSION = "4.2.0"
4
4
  end
5
-
data/lib/bullet.rb CHANGED
@@ -33,7 +33,7 @@ module Bullet
33
33
  attr_accessor :enable, :disable_browser_cache
34
34
  attr_reader :notification_collector
35
35
 
36
- delegate :alert=, :console=, :growl=, :rails_logger=, :xmpp=, :to => UniformNotifier
36
+ delegate :alert=, :console=, :growl=, :rails_logger=, :xmpp=, :airbrake=, :to => UniformNotifier
37
37
 
38
38
  DETECTORS = [ Bullet::Detector::NPlusOneQuery,
39
39
  Bullet::Detector::UnusedEagerAssociation,
@@ -59,7 +59,7 @@ module Bullet
59
59
  def bullet_logger=(active)
60
60
  if active
61
61
  bullet_log_file = File.open('log/bullet.log', 'a+')
62
- bullet_log_file.sync
62
+ bullet_log_file.sync = true
63
63
  UniformNotifier.customized_logger = bullet_log_file
64
64
  end
65
65
  end
@@ -22,6 +22,12 @@ module Bullet
22
22
  middleware.should be_html_request(headers, response)
23
23
  end
24
24
 
25
+ it "should be true if Content-Type is text/html and http body contains html tag with attributes" do
26
+ headers = {"Content-Type" => "text/html"}
27
+ response = stub(:body => "<html attr='hello'><head></head><body></body></html>")
28
+ middleware.should be_html_request(headers, response)
29
+ end
30
+
25
31
  it "should be false if there is no Content-Type header" do
26
32
  headers = {}
27
33
  response = stub(:body => "<html><head></head><body></body></html>")
@@ -11,6 +11,20 @@ if mongoid?
11
11
  Mongoid::IdentityMap.clear
12
12
  end
13
13
 
14
+ context 'embeds_many' do
15
+ context "posts => users" do
16
+ it "should detect nothing" do
17
+ Mongoid::Post.all.each do |post|
18
+ post.users.map(&:name)
19
+ end
20
+ Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
21
+ Bullet::Detector::Association.should_not be_has_unused_preload_associations
22
+
23
+ Bullet::Detector::Association.should be_completely_preloading_associations
24
+ end
25
+ end
26
+ end
27
+
14
28
  context 'has_many' do
15
29
  context "posts => comments" do
16
30
  it "should detect non preload posts => comments" do
@@ -4,5 +4,7 @@ class Mongoid::Post
4
4
  has_many :comments, :class_name => "Mongoid::Comment"
5
5
  belongs_to :category, :class_name => "Mongoid::Category"
6
6
 
7
+ embeds_many :users, :class_name => "Mongoid::User"
8
+
7
9
  scope :preload_comments, lambda { includes(:comments) }
8
10
  end
@@ -0,0 +1,3 @@
1
+ class Mongoid::User
2
+ include Mongoid::Document
3
+ end
@@ -8,6 +8,10 @@ module Support
8
8
  post1a = category1.posts.create(:name => 'like first')
9
9
  post2 = category2.posts.create(:name => 'second')
10
10
 
11
+ post1.users << Mongoid::User.create(:name => 'first')
12
+ post1.users << Mongoid::User.create(:name => 'another')
13
+ post2.users << Mongoid::User.create(:name => 'second')
14
+
11
15
  comment1 = post1.comments.create(:name => 'first')
12
16
  comment2 = post1.comments.create(:name => 'first2')
13
17
  comment3 = post1.comments.create(:name => 'first3')
data/test.sh CHANGED
@@ -2,3 +2,4 @@ bundle && bundle exec rspec spec
2
2
  BUNDLE_GEMFILE=Gemfile.rails-3.1.5 bundle && bundle exec rspec spec
3
3
  BUNDLE_GEMFILE=Gemfile.rails-3.0.13 bundle && bundle exec rspec spec
4
4
  BUNDLE_GEMFILE=Gemfile.rails-2.3.14 bundle && bundle exec rspec spec
5
+ BUNDLE_GEMFILE=Gemfile.rails-4-beta bundle && bundle exec rspec spec
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 4.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,19 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-06 00:00:00.000000000 Z
12
+ date: 2012-09-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: uniform_notifier
16
- requirement: &70259190750800 !ruby/object:Gem::Requirement
16
+ requirement: &70294547787940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.0.0
21
+ version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70259190750800
24
+ version_requirements: *70294547787940
25
25
  description: A rails plugin to kill N+1 queries and unused eager loading.
26
26
  email:
27
27
  - flyerhzm@gmail.com
@@ -35,13 +35,10 @@ files:
35
35
  - .rvmrc.example
36
36
  - .travis.yml
37
37
  - Gemfile
38
- - Gemfile.lock
39
38
  - Gemfile.rails-2.3.14
40
- - Gemfile.rails-2.3.14.lock
41
39
  - Gemfile.rails-3.0.13
42
- - Gemfile.rails-3.0.13.lock
43
40
  - Gemfile.rails-3.1.5
44
- - Gemfile.rails-3.1.5.lock
41
+ - Gemfile.rails-4-beta
45
42
  - Guardfile
46
43
  - Hacking.textile
47
44
  - MIT-LICENSE
@@ -119,6 +116,7 @@ files:
119
116
  - spec/models/mongoid/company.rb
120
117
  - spec/models/mongoid/entry.rb
121
118
  - spec/models/mongoid/post.rb
119
+ - spec/models/mongoid/user.rb
122
120
  - spec/models/newspaper.rb
123
121
  - spec/models/page.rb
124
122
  - spec/models/person.rb
@@ -136,7 +134,6 @@ files:
136
134
  - spec/support/rack_double.rb
137
135
  - spec/support/sqlite_seed.rb
138
136
  - tasks/bullet_tasks.rake
139
- - test.result
140
137
  - test.sh
141
138
  homepage: http://github.com/flyerhzm/bullet
142
139
  licenses: []
@@ -152,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
149
  version: '0'
153
150
  segments:
154
151
  - 0
155
- hash: 3239988902273692039
152
+ hash: -1372591245763188534
156
153
  required_rubygems_version: !ruby/object:Gem::Requirement
157
154
  none: false
158
155
  requirements:
@@ -206,6 +203,7 @@ test_files:
206
203
  - spec/models/mongoid/company.rb
207
204
  - spec/models/mongoid/entry.rb
208
205
  - spec/models/mongoid/post.rb
206
+ - spec/models/mongoid/user.rb
209
207
  - spec/models/newspaper.rb
210
208
  - spec/models/page.rb
211
209
  - spec/models/person.rb
data/Gemfile.lock DELETED
@@ -1,129 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- bullet (4.1.1)
5
- uniform_notifier (~> 1.0.0)
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- actionmailer (3.2.5)
11
- actionpack (= 3.2.5)
12
- mail (~> 2.4.4)
13
- actionpack (3.2.5)
14
- activemodel (= 3.2.5)
15
- activesupport (= 3.2.5)
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.3)
23
- activemodel (3.2.5)
24
- activesupport (= 3.2.5)
25
- builder (~> 3.0.0)
26
- activerecord (3.2.5)
27
- activemodel (= 3.2.5)
28
- activesupport (= 3.2.5)
29
- arel (~> 3.0.2)
30
- tzinfo (~> 0.3.29)
31
- activerecord-import (0.2.9)
32
- activerecord (~> 3.0)
33
- activerecord (~> 3.0)
34
- activeresource (3.2.5)
35
- activemodel (= 3.2.5)
36
- activesupport (= 3.2.5)
37
- activesupport (3.2.5)
38
- i18n (~> 0.6)
39
- multi_json (~> 1.0)
40
- arel (3.0.2)
41
- builder (3.0.0)
42
- diff-lcs (1.1.3)
43
- erubis (2.7.0)
44
- ffi (1.0.11)
45
- guard (1.0.1)
46
- ffi (>= 0.5.0)
47
- thor (~> 0.14.6)
48
- guard-rspec (0.6.0)
49
- guard (>= 0.10.0)
50
- hike (1.2.1)
51
- i18n (0.6.0)
52
- journey (1.0.3)
53
- json (1.7.3)
54
- mail (2.4.4)
55
- i18n (>= 0.4.0)
56
- mime-types (~> 1.16)
57
- treetop (~> 1.4.8)
58
- mime-types (1.18)
59
- mongoid (3.0.0.rc)
60
- activemodel (~> 3.1)
61
- moped (~> 1.0.0.rc)
62
- origin (~> 1.0.0.rc)
63
- tzinfo (~> 0.3.22)
64
- moped (1.0.0.rc)
65
- multi_json (1.3.6)
66
- mysql (2.8.1)
67
- origin (1.0.0.rc)
68
- perftools.rb (2.0.0)
69
- polyglot (0.3.3)
70
- rack (1.4.1)
71
- rack-cache (1.2)
72
- rack (>= 0.4)
73
- rack-ssl (1.3.2)
74
- rack
75
- rack-test (0.6.1)
76
- rack (>= 1.0)
77
- rails (3.2.5)
78
- actionmailer (= 3.2.5)
79
- actionpack (= 3.2.5)
80
- activerecord (= 3.2.5)
81
- activeresource (= 3.2.5)
82
- activesupport (= 3.2.5)
83
- bundler (~> 1.0)
84
- railties (= 3.2.5)
85
- railties (3.2.5)
86
- actionpack (= 3.2.5)
87
- activesupport (= 3.2.5)
88
- rack-ssl (~> 1.3.2)
89
- rake (>= 0.8.7)
90
- rdoc (~> 3.4)
91
- thor (>= 0.14.6, < 2.0)
92
- rake (0.9.2.2)
93
- rdoc (3.12)
94
- json (~> 1.4)
95
- rspec (2.9.0)
96
- rspec-core (~> 2.9.0)
97
- rspec-expectations (~> 2.9.0)
98
- rspec-mocks (~> 2.9.0)
99
- rspec-core (2.9.0)
100
- rspec-expectations (2.9.0)
101
- diff-lcs (~> 1.1.3)
102
- rspec-mocks (2.9.0)
103
- sprockets (2.1.3)
104
- hike (~> 1.2)
105
- rack (~> 1.0)
106
- tilt (~> 1.1, != 1.3.0)
107
- sqlite3 (1.3.5)
108
- thor (0.14.6)
109
- tilt (1.3.3)
110
- treetop (1.4.10)
111
- polyglot
112
- polyglot (>= 0.3.1)
113
- tzinfo (0.3.33)
114
- uniform_notifier (1.0.2)
115
-
116
- PLATFORMS
117
- ruby
118
-
119
- DEPENDENCIES
120
- activerecord-import
121
- bullet!
122
- guard
123
- guard-rspec
124
- mongoid (= 3.0.0.rc)
125
- mysql
126
- perftools.rb
127
- rails (= 3.2.5)
128
- rspec
129
- sqlite3
@@ -1,65 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- bullet (4.1.1)
5
- uniform_notifier (~> 1.0.0)
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- actionmailer (2.3.14)
11
- actionpack (= 2.3.14)
12
- actionpack (2.3.14)
13
- activesupport (= 2.3.14)
14
- rack (~> 1.1.0)
15
- activerecord (2.3.14)
16
- activesupport (= 2.3.14)
17
- activeresource (2.3.14)
18
- activesupport (= 2.3.14)
19
- activesupport (2.3.14)
20
- bson (1.6.2)
21
- bson_ext (1.6.2)
22
- bson (~> 1.6.2)
23
- diff-lcs (1.1.3)
24
- ffi (1.0.11)
25
- guard (1.0.2)
26
- ffi (>= 0.5.0)
27
- thor (~> 0.14.6)
28
- guard-rspec (0.7.0)
29
- guard (>= 0.10.0)
30
- mysql (2.8.1)
31
- perftools.rb (2.0.0)
32
- rack (1.1.3)
33
- rails (2.3.14)
34
- actionmailer (= 2.3.14)
35
- actionpack (= 2.3.14)
36
- activerecord (= 2.3.14)
37
- activeresource (= 2.3.14)
38
- activesupport (= 2.3.14)
39
- rake (>= 0.8.3)
40
- rake (0.9.2.2)
41
- rspec (2.10.0)
42
- rspec-core (~> 2.10.0)
43
- rspec-expectations (~> 2.10.0)
44
- rspec-mocks (~> 2.10.0)
45
- rspec-core (2.10.0)
46
- rspec-expectations (2.10.0)
47
- diff-lcs (~> 1.1.3)
48
- rspec-mocks (2.10.1)
49
- sqlite3 (1.3.6)
50
- thor (0.14.6)
51
- uniform_notifier (1.0.2)
52
-
53
- PLATFORMS
54
- ruby
55
-
56
- DEPENDENCIES
57
- bson_ext
58
- bullet!
59
- guard
60
- guard-rspec
61
- mysql
62
- perftools.rb
63
- rails (= 2.3.14)
64
- rspec
65
- sqlite3