brakefast 0.0.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.
data/perf/benchmark.rb ADDED
@@ -0,0 +1,121 @@
1
+ $: << 'lib'
2
+ require 'benchmark'
3
+ require 'rails'
4
+ require 'active_record'
5
+ require 'activerecord-import'
6
+ require 'bullet'
7
+
8
+ begin
9
+ require 'perftools'
10
+ rescue LoadError
11
+ puts "Could not load perftools.rb, profiling won't be possible"
12
+ end
13
+
14
+ class Post < ActiveRecord::Base
15
+ belongs_to :user
16
+ has_many :comments
17
+ end
18
+
19
+ class Comment < ActiveRecord::Base
20
+ belongs_to :user
21
+ belongs_to :post
22
+ end
23
+
24
+ class User < ActiveRecord::Base
25
+ has_many :posts
26
+ has_many :comments
27
+ end
28
+
29
+ # create database bullet_benchmark;
30
+ ActiveRecord::Base.establish_connection(:adapter => 'mysql2', :database => 'bullet_benchmark', :server => '/tmp/mysql.socket', :username => 'root')
31
+
32
+ ActiveRecord::Base.connection.tables.each do |table|
33
+ ActiveRecord::Base.connection.drop_table(table)
34
+ end
35
+
36
+ ActiveRecord::Schema.define(:version => 1) do
37
+ create_table :posts do |t|
38
+ t.column :title, :string
39
+ t.column :body, :string
40
+ t.column :user_id, :integer
41
+ end
42
+
43
+ create_table :comments do |t|
44
+ t.column :body, :string
45
+ t.column :post_id, :integer
46
+ t.column :user_id, :integer
47
+ end
48
+
49
+ create_table :users do |t|
50
+ t.column :name, :string
51
+ end
52
+ end
53
+
54
+ users_size = 100
55
+ posts_size = 1000
56
+ comments_size = 10000
57
+ users = []
58
+ users_size.times do |i|
59
+ users << User.new(:name => "user#{i}")
60
+ end
61
+ User.import users
62
+ users = User.all
63
+
64
+ posts = []
65
+ posts_size.times do |i|
66
+ posts << Post.new(:title => "Title #{i}", :body => "Body #{i}", :user => users[i%100])
67
+ end
68
+ Post.import posts
69
+ posts = Post.all
70
+
71
+ comments = []
72
+ comments_size.times do |i|
73
+ comments << Comment.new(:body => "Comment #{i}", :post => posts[i%1000], :user => users[i%100])
74
+ end
75
+ Comment.import comments
76
+
77
+ puts "Start benchmarking..."
78
+
79
+
80
+ Bullet.enable = true
81
+
82
+ Benchmark.bm(70) do |bm|
83
+ bm.report("Querying & Iterating #{posts_size} Posts with #{comments_size} Comments and #{users_size} Users") do
84
+ 10.times do
85
+ Bullet.start_request
86
+ Post.select("SQL_NO_CACHE *").includes(:user, :comments => :user).each do |p|
87
+ p.title
88
+ p.user.name
89
+ p.comments.each do |c|
90
+ c.body
91
+ c.user.name
92
+ end
93
+ end
94
+ Bullet.end_request
95
+ end
96
+ end
97
+ end
98
+
99
+ puts "End benchmarking..."
100
+
101
+
102
+ # Run benchmark with bundler
103
+ #
104
+ # bundle exec ruby perf/benchmark.rb
105
+ #
106
+ # bullet 2.3.0 with rails 3.2.2
107
+ # user system total real
108
+ # Querying & Iterating 1000 Posts with 10000 Comments and 100 Users 16.460000 0.190000 16.650000 ( 16.968246)
109
+ #
110
+ # bullet 2.3.0 with rails 3.1.4
111
+ # user system total real
112
+ # Querying & Iterating 1000 Posts with 10000 Comments and 100 Users 14.600000 0.130000 14.730000 ( 14.937590)
113
+ #
114
+ # bullet 2.3.0 with rails 3.0.12
115
+ # user system total real
116
+ # Querying & Iterating 1000 Posts with 10000 Comments and 100 Users 26.120000 0.430000 26.550000 ( 27.179304)
117
+ #
118
+ #
119
+ # bullet 2.2.1 with rails 3.0.12
120
+ # user system total real
121
+ # Querying & Iterating 1000 Posts with 10000 Comments and 100 Users 29.970000 0.270000 30.240000 ( 30.452083)
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'bullet'
@@ -0,0 +1,9 @@
1
+ namespace :bullet do
2
+ namespace :log do
3
+ desc "Truncates the bullet log file to zero bytes"
4
+ task :clear do
5
+ f = File.open("log/bullet.log", "w")
6
+ f.close
7
+ end
8
+ end
9
+ end
data/test.sh ADDED
@@ -0,0 +1,17 @@
1
+ #bundle update rails && bundle exec rspec spec
2
+ #BUNDLE_GEMFILE=Gemfile.mongoid bundle update mongoid && BUNDLE_GEMFILE=Gemfile.mongoid bundle exec rspec spec
3
+ BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle exec rspec spec
4
+ BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle exec rspec spec
5
+ BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle exec rspec spec
6
+ BUNDLE_GEMFILE=Gemfile.rails-3.2 bundle && BUNDLE_GEMFILE=Gemfile.rails-3.2 bundle exec rspec spec
7
+ BUNDLE_GEMFILE=Gemfile.rails-3.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-3.1 bundle exec rspec spec
8
+ BUNDLE_GEMFILE=Gemfile.rails-3.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-3.0 bundle exec rspec spec
9
+ BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle exec rspec spec
10
+ BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle exec rspec spec
11
+ BUNDLE_GEMFILE=Gemfile.mongoid-3.1 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-3.1 bundle exec rspec spec
12
+ BUNDLE_GEMFILE=Gemfile.mongoid-3.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-3.0 bundle exec rspec spec
13
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.8 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-2.8 bundle exec rspec spec
14
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.7 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-2.7 bundle exec rspec spec
15
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.6 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-2.6 bundle exec rspec spec
16
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.5 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-2.5 bundle exec rspec spec
17
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.4 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-2.4 bundle exec rspec spec
data/update.sh ADDED
@@ -0,0 +1,15 @@
1
+ BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle update
2
+ BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle update
3
+ BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle update
4
+ BUNDLE_GEMFILE=Gemfile.rails-3.2 bundle update
5
+ BUNDLE_GEMFILE=Gemfile.rails-3.1 bundle update
6
+ BUNDLE_GEMFILE=Gemfile.rails-3.0 bundle update
7
+ BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle update
8
+ BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle update
9
+ BUNDLE_GEMFILE=Gemfile.mongoid-3.1 bundle update
10
+ BUNDLE_GEMFILE=Gemfile.mongoid-3.0 bundle update
11
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.8 bundle update
12
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.7 bundle update
13
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.6 bundle update
14
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.5 bundle update
15
+ BUNDLE_GEMFILE=Gemfile.mongoid-2.4 bundle update
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brakefast
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sho Hashimoto
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-08-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: uniform_notifier
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: brakeman
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: runtime brakeman notifier like bullet
84
+ email:
85
+ - sho.hsmt@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - CHANGELOG.md
94
+ - Gemfile
95
+ - Guardfile
96
+ - Hacking.md
97
+ - MIT-LICENSE
98
+ - README.md
99
+ - Rakefile
100
+ - brakefast.gemspec
101
+ - lib/brakefast.rb
102
+ - lib/brakefast/brakeman.rb
103
+ - lib/brakefast/dependency.rb
104
+ - lib/brakefast/detector.rb
105
+ - lib/brakefast/detector/base.rb
106
+ - lib/brakefast/detector/controller_warnings.rb
107
+ - lib/brakefast/detector/generic_warnings.rb
108
+ - lib/brakefast/detector/model_warnings.rb
109
+ - lib/brakefast/notification.rb
110
+ - lib/brakefast/notification/base.rb
111
+ - lib/brakefast/notification/controller_warnings.rb
112
+ - lib/brakefast/notification/generic_warnings.rb
113
+ - lib/brakefast/notification/model_warnings.rb
114
+ - lib/brakefast/notification_collector.rb
115
+ - lib/brakefast/rack.rb
116
+ - lib/brakefast/version.rb
117
+ - perf/benchmark.rb
118
+ - rails/init.rb
119
+ - tasks/bullet_tasks.rake
120
+ - test.sh
121
+ - update.sh
122
+ homepage: https://github.com/sho-h/brakefast
123
+ licenses:
124
+ - MIT
125
+ metadata: {}
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubyforge_project:
142
+ rubygems_version: 2.2.3
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: runtime brakeman notifier like bullet
146
+ test_files: []