plaid-rails 0.0.2
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/.rvmrc +2 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +32 -0
- data/README +0 -0
- data/Rakefile +50 -0
- data/VERSION +1 -0
- data/lib/plaid-rails.rb +57 -0
- data/plaid-rails.gemspec +56 -0
- data/test/helper.rb +18 -0
- data/test/test_plaid-rails.rb +7 -0
- metadata +103 -0
data/.rvmrc
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source :rubygems
|
2
|
+
|
3
|
+
gem 'plaid', :git => 'git@github.com:DirectionSky/plaid.git', :require => 'ruby_prof'
|
4
|
+
gem "rack"
|
5
|
+
gem "rest-client"
|
6
|
+
|
7
|
+
group :development do
|
8
|
+
gem "jeweler"
|
9
|
+
end
|
10
|
+
|
11
|
+
group :test do
|
12
|
+
gem "shoulda", ">= 0"
|
13
|
+
gem "rcov", ">= 0"
|
14
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git@github.com:DirectionSky/plaid.git
|
3
|
+
revision: b4199ab3f1b778be0f1306fcba6d24683b8639c9
|
4
|
+
specs:
|
5
|
+
plaid (0.11.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
git (1.2.5)
|
11
|
+
jeweler (1.6.4)
|
12
|
+
bundler (~> 1.0)
|
13
|
+
git (>= 1.2.5)
|
14
|
+
rake
|
15
|
+
mime-types (1.17.2)
|
16
|
+
rack (1.4.0)
|
17
|
+
rake (0.9.2.2)
|
18
|
+
rcov (0.9.11)
|
19
|
+
rest-client (1.6.7)
|
20
|
+
mime-types (>= 1.16)
|
21
|
+
shoulda (2.11.3)
|
22
|
+
|
23
|
+
PLATFORMS
|
24
|
+
ruby
|
25
|
+
|
26
|
+
DEPENDENCIES
|
27
|
+
jeweler
|
28
|
+
plaid!
|
29
|
+
rack
|
30
|
+
rcov
|
31
|
+
rest-client
|
32
|
+
shoulda
|
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
gem.name = "plaid-rails"
|
17
|
+
gem.homepage = "http://github.com/DirectionSky/plaid-rails"
|
18
|
+
gem.summary = %Q{Rack-Plaid integration for Rails}
|
19
|
+
gem.description = %Q{A Rack module that intercepts HTTP calls and sends profiling data to the Plaid server. For Rails (and not just Rails?).}
|
20
|
+
gem.email = "paolo.nusco.perrotta@gmail.com"
|
21
|
+
gem.authors = ["Paolo \"Nusco\" Perrotta"]
|
22
|
+
end
|
23
|
+
Jeweler::RubygemsDotOrgTasks.new
|
24
|
+
|
25
|
+
require 'rake/testtask'
|
26
|
+
Rake::TestTask.new(:test) do |test|
|
27
|
+
test.libs << 'lib' << 'test'
|
28
|
+
test.pattern = 'test/**/test_*.rb'
|
29
|
+
test.verbose = true
|
30
|
+
end
|
31
|
+
|
32
|
+
require 'rcov/rcovtask'
|
33
|
+
Rcov::RcovTask.new do |test|
|
34
|
+
test.libs << 'test'
|
35
|
+
test.pattern = 'test/**/test_*.rb'
|
36
|
+
test.verbose = true
|
37
|
+
test.rcov_opts << '--exclude "gems/*"'
|
38
|
+
end
|
39
|
+
|
40
|
+
task :default => :test
|
41
|
+
|
42
|
+
require 'rake/rdoctask'
|
43
|
+
Rake::RDocTask.new do |rdoc|
|
44
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
+
|
46
|
+
rdoc.rdoc_dir = 'rdoc'
|
47
|
+
rdoc.title = "plaid-rails #{version}"
|
48
|
+
rdoc.rdoc_files.include('README*')
|
49
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.2
|
data/lib/plaid-rails.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'rack'
|
2
|
+
require 'ruby-prof'
|
3
|
+
require 'yaml'
|
4
|
+
require 'rest-client'
|
5
|
+
|
6
|
+
# TODO: maybe keep using local server for testing?
|
7
|
+
#PLAID_SERVER = 'http://localhost:9292'
|
8
|
+
PLAID_SERVER = 'http://plaid-server.heroku.com'
|
9
|
+
|
10
|
+
# Monkeypatch RubyProf::Result until we find a better way to serialize it
|
11
|
+
module RubyProf
|
12
|
+
class Result
|
13
|
+
def to_h
|
14
|
+
result = {}
|
15
|
+
threads.each do |thread_id, methods|
|
16
|
+
result[thread_id] = methods.map do |method_info|
|
17
|
+
{ :full_name => method_info.full_name,
|
18
|
+
:total_time => method_info.total_time,
|
19
|
+
:source_file => method_info.source_file }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
result
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module Rack
|
28
|
+
class Plaid
|
29
|
+
def initialize(app)
|
30
|
+
@app = app
|
31
|
+
@queue = Queue.new
|
32
|
+
if ENV['PLAID_MESSENGER'] == 'off'
|
33
|
+
puts 'Plaid thread disabled. ' \
|
34
|
+
'No information will be sent to the Plaid server.'
|
35
|
+
else
|
36
|
+
Thread.new do
|
37
|
+
loop do
|
38
|
+
RestClient.put PLAID_SERVER,
|
39
|
+
@queue.pop.to_h.to_yaml,
|
40
|
+
:content_type => 'text/plain'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
::RubyProf.measure_mode = ::RubyProf::WALL_TIME
|
45
|
+
end
|
46
|
+
|
47
|
+
def call(env)
|
48
|
+
return @app.call(env) if env["QUERY_STRING"] =~ /plaid=off/
|
49
|
+
::RubyProf.start
|
50
|
+
begin
|
51
|
+
@app.call(env)
|
52
|
+
ensure
|
53
|
+
@queue << ::RubyProf.stop
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/plaid-rails.gemspec
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "plaid-rails"
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Paolo \"Nusco\" Perrotta"]
|
12
|
+
s.date = "2012-01-08"
|
13
|
+
s.description = "A Rack module that intercepts HTTP calls and sends profiling data to the Plaid server. For Rails (and not just Rails?)."
|
14
|
+
s.email = "paolo.nusco.perrotta@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".rvmrc",
|
20
|
+
"Gemfile",
|
21
|
+
"Gemfile.lock",
|
22
|
+
"README",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"lib/plaid-rails.rb",
|
26
|
+
"plaid-rails.gemspec",
|
27
|
+
"test/helper.rb",
|
28
|
+
"test/test_plaid-rails.rb"
|
29
|
+
]
|
30
|
+
s.homepage = "http://github.com/DirectionSky/plaid-rails"
|
31
|
+
s.require_paths = ["lib"]
|
32
|
+
s.rubygems_version = "1.8.10"
|
33
|
+
s.summary = "Rack-Plaid integration for Rails"
|
34
|
+
|
35
|
+
if s.respond_to? :specification_version then
|
36
|
+
s.specification_version = 3
|
37
|
+
|
38
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
39
|
+
s.add_runtime_dependency(%q<plaid>, [">= 0"])
|
40
|
+
s.add_runtime_dependency(%q<rack>, [">= 0"])
|
41
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
42
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
43
|
+
else
|
44
|
+
s.add_dependency(%q<plaid>, [">= 0"])
|
45
|
+
s.add_dependency(%q<rack>, [">= 0"])
|
46
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
47
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
48
|
+
end
|
49
|
+
else
|
50
|
+
s.add_dependency(%q<plaid>, [">= 0"])
|
51
|
+
s.add_dependency(%q<rack>, [">= 0"])
|
52
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
53
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'plaid-rails'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: plaid-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Paolo "Nusco" Perrotta
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-08 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: plaid
|
16
|
+
requirement: &70131120482160 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70131120482160
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rack
|
27
|
+
requirement: &70131120480340 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70131120480340
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rest-client
|
38
|
+
requirement: &70131120459380 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70131120459380
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jeweler
|
49
|
+
requirement: &70131120455900 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70131120455900
|
58
|
+
description: A Rack module that intercepts HTTP calls and sends profiling data to
|
59
|
+
the Plaid server. For Rails (and not just Rails?).
|
60
|
+
email: paolo.nusco.perrotta@gmail.com
|
61
|
+
executables: []
|
62
|
+
extensions: []
|
63
|
+
extra_rdoc_files:
|
64
|
+
- README
|
65
|
+
files:
|
66
|
+
- .rvmrc
|
67
|
+
- Gemfile
|
68
|
+
- Gemfile.lock
|
69
|
+
- README
|
70
|
+
- Rakefile
|
71
|
+
- VERSION
|
72
|
+
- lib/plaid-rails.rb
|
73
|
+
- plaid-rails.gemspec
|
74
|
+
- test/helper.rb
|
75
|
+
- test/test_plaid-rails.rb
|
76
|
+
homepage: http://github.com/DirectionSky/plaid-rails
|
77
|
+
licenses: []
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
hash: -562509056668019227
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 1.8.10
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: Rack-Plaid integration for Rails
|
103
|
+
test_files: []
|