remnant 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.3@gems
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- flail (0.1.2)
4
+ remnant (0.1.3)
5
+ statsd-ruby (= 1.0.0)
5
6
 
6
7
  GEM
7
8
  remote: http://rubygems.org/
@@ -13,7 +14,6 @@ GEM
13
14
  activesupport (= 2.3.14)
14
15
  activesupport (2.3.14)
15
16
  diff-lcs (1.1.3)
16
- fakeweb (1.3.0)
17
17
  rack (1.1.3)
18
18
  rake (0.9.2.2)
19
19
  rr (1.0.4)
@@ -25,8 +25,7 @@ GEM
25
25
  rspec-expectations (2.11.2)
26
26
  diff-lcs (~> 1.1.3)
27
27
  rspec-mocks (2.11.1)
28
- sham_rack (1.3.4)
29
- rack
28
+ statsd-ruby (1.0.0)
30
29
 
31
30
  PLATFORMS
32
31
  ruby
@@ -35,9 +34,7 @@ DEPENDENCIES
35
34
  actionpack (~> 2.3.8)
36
35
  activerecord (~> 2.3.8)
37
36
  activesupport (~> 2.3.8)
38
- fakeweb (~> 1.3.0)
39
- flail!
40
37
  rake
38
+ remnant!
41
39
  rr
42
40
  rspec
43
- sham_rack (~> 1.3.0)
data/lib/remnant/rails.rb CHANGED
@@ -44,8 +44,16 @@ class Remnant
44
44
  ::ActionController::Dispatcher.class_eval do
45
45
  def call_with_remnant_discovery(*args, &block) #:nodoc:
46
46
  call_without_remnant_discovery(*args, &block).tap do |status, headers, response|
47
- ::Remnant.collect
48
- ::Rails.logger.flush if ::Rails.logger.respond_to? :flush
47
+ begin
48
+ ::Remnant.collect
49
+ ::Rails.logger.flush if ::Rails.logger.respond_to? :flush
50
+ rescue Exception => e
51
+ if defined?(::Flail)
52
+ Flail::Exception.notify(e)
53
+ else
54
+ Rails.logger.error e.inspect
55
+ end
56
+ end
49
57
  end
50
58
  end
51
59
  alias_method_chain :call, :remnant_discovery
@@ -1,3 +1,3 @@
1
1
  class Remnant
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,15 @@
1
+ class Some::Klass
2
+ include Some::Module
3
+
4
+ def self.world
5
+ 'world'
6
+ end
7
+
8
+ def yielder
9
+ yield
10
+ end
11
+
12
+ def echo(*args)
13
+ args
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module Some::Module
2
+ def foo
3
+ 'foo'
4
+ end
5
+
6
+ def self.bar
7
+ 'bar'
8
+ end
9
+ end
data/spec/base_spec.rb CHANGED
@@ -1,23 +1,22 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Flail do
3
+ describe Remnant do
4
4
 
5
5
  context "#configuration" do
6
6
  it "should return the same object for multiple calls" do
7
- Flail.configuration.should == Flail.configuration
7
+ Remnant.configuration.should == Remnant.configuration
8
8
  end
9
9
  end
10
10
 
11
11
  context "#configure" do
12
12
  it "should fail without a block" do
13
- lambda { Flail.configure }.should raise_error
13
+ lambda { Remnant.configure }.should raise_error
14
14
  end
15
15
 
16
16
  it "should instance_eval the block onto configuration" do
17
17
  block = Proc.new { handle {|payload| } }
18
- mock(Flail).configuration.stub!.instance_eval(&block)
19
- Flail.configure(&block)
18
+ mock(Remnant).configuration.stub!.instance_eval(&block)
19
+ Remnant.configure(&block)
20
20
  end
21
21
  end
22
22
  end
23
-
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe Remnant::Discover do
4
+
5
+ before do
6
+ Remnant::Discover.results.clear
7
+ end
8
+
9
+ context "#measure" do
10
+ it "should preserve return" do
11
+ Remnant::Discover.measure('troll') { 'bridge'}.should == 'bridge'
12
+ end
13
+
14
+ it "should add to existing result" do
15
+ Remnant::Discover.results['fragment'].should == 0
16
+
17
+ Remnant::Discover.measure('fragment') { 'shattered' }
18
+ shattered_measurement = Remnant::Discover.results['fragment']
19
+
20
+ Remnant::Discover.measure('fragment') { 'intact' }
21
+ Remnant::Discover.results['fragment'].should > shattered_measurement
22
+ end
23
+
24
+ it "should add to existing nested results" do
25
+ Remnant::Discover.results['fragment'].should == 0
26
+
27
+ Remnant::Discover.measure('fragment') do
28
+ sleep 0.2
29
+ Remnant::Discover.measure('fragment') do
30
+ sleep 0.2
31
+ end
32
+ end
33
+
34
+ Remnant::Discover.results['fragment'].should < 410
35
+ Remnant::Discover.results['fragment'].should > 390
36
+ end
37
+ end
38
+
39
+ context "#find" do
40
+ it "should be able to watch passing blocks" do
41
+ Remnant::Discover.find('yielding', Some::Klass, :yielder)
42
+ Some::Klass.new.yielder { 'techno'}.should == 'techno'
43
+ end
44
+
45
+ it "should be able to watch passing args" do
46
+ Remnant::Discover.find('echo', Some::Klass, :echo)
47
+ Some::Klass.new.echo(1, 1, 2, 3, 5).should == [1, 1, 2, 3, 5]
48
+ end
49
+
50
+ it "should be able to watch an instance method" do
51
+ Remnant::Discover.find('instance', Some::Klass, :foo)
52
+
53
+ Some::Klass.new.foo.should == 'foo'
54
+ Remnant::Discover.results['instance'].should_not == nil
55
+ end
56
+
57
+ it "should be able to watch a class method" do
58
+ Remnant::Discover.find('class_method', Some::Klass, :world, false)
59
+
60
+ Some::Klass.world.should == 'world'
61
+ Remnant::Discover.results['class_method'].should_not == nil
62
+ end
63
+ end
64
+ end
data/spec/spec_helper.rb CHANGED
@@ -10,115 +10,11 @@ RSpec.configure do |config|
10
10
  end
11
11
 
12
12
  require 'action_controller'
13
- require 'action_controller/test_process'
14
- require 'active_record'
15
13
  require 'active_support'
16
- require 'rack'
17
- require 'sham_rack'
18
-
19
- require 'flail'
20
- require 'flail/rails/controller_methods'
21
- require 'flail/rails/rescue_action'
22
14
 
15
+ require 'remnant'
23
16
 
24
17
  Dir["#{File.expand_path(File.dirname(__FILE__))}/support/*.rb"].map {|file| require(file)}
25
18
 
26
- class FlailArmory
27
-
28
- module ClassMethods
29
- def define_constant(name, value)
30
- @defined_constants ||= []
31
- Object.const_set(name, value)
32
- @defined_constants << name
33
- end
34
-
35
- def build_controller_class(&definition)
36
- Class.new(ActionController::Base).tap do |klass|
37
- klass.__send__(:include, Flail::Rails::ControllerMethods)
38
- klass.__send__(:include, Flail::Rails::RescueAction)
39
- klass.class_eval(&definition) if definition
40
-
41
- klass.class_eval do
42
- def rescue_action_in_public_without_flail(*args)
43
- end
44
- end
45
- define_constant('FlailTestController', klass)
46
- end
47
- end
48
-
49
- def process_action(options = {}, &action)
50
- options[:request] ||= ActionController::TestRequest.new
51
- options[:response] ||= ActionController::TestResponse.new
52
-
53
- klass = build_controller_class do
54
- cattr_accessor :local
55
- define_method(:index, &action)
56
-
57
- def current_user
58
- @current_user
59
- end
60
-
61
- def local_request?
62
- local
63
- end
64
- end
65
-
66
- if options[:user_agent]
67
- if options[:request].respond_to?(:user_agent=)
68
- options[:request].user_agent = options[:user_agent]
69
- else
70
- options[:request].env["HTTP_USER_AGENT"] = options[:user_agent]
71
- end
72
- end
73
-
74
- klass.consider_all_requests_local = options[:all_local]
75
- klass.local = options[:local]
76
-
77
- controller = klass.new
78
-
79
- if options[:user]
80
- controller.instance_variable_set(:@current_user, options[:user])
81
- end
82
-
83
- options[:request].query_parameters = options[:request].query_parameters.merge(options[:params] || {})
84
- options[:request].session = ActionController::TestSession.new(options[:session] || {})
85
- options[:request].env['REQUEST_URI'] = options[:request].request_uri
86
-
87
- controller.process(options[:request], options[:response])
88
- controller
89
- end
90
-
91
- def process_action_with_error(options = {})
92
- process_action(options) do
93
- raise "Hello"
94
- end
95
- end
96
-
97
- def setup
98
- Flail.configure do
99
- handle do |payload|
100
- FlailArmory.payload = ActiveSupport::JSON.decode(payload)
101
- end
102
- end
103
- define_constant('RAILS_ROOT', '/path/to/rails/root')
104
- end
105
-
106
- def payload=(value)
107
- @payload = value
108
- end
109
-
110
- def payload
111
- @payload
112
- end
113
-
114
- def raid
115
- @defined_constants.each do |constant|
116
- Object.__send__(:remove_const, constant)
117
- end
118
-
119
- @payload = nil
120
- @defined_constants = []
121
- end
122
- end
123
- extend ClassMethods
124
- end
19
+ # for dependency reloading
20
+ ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__) + '/app/'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remnant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-13 00:00:00.000000000 Z
12
+ date: 2012-09-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: statsd-ruby
@@ -131,6 +131,7 @@ executables: []
131
131
  extensions: []
132
132
  extra_rdoc_files: []
133
133
  files:
134
+ - .rvmrc
134
135
  - Gemfile
135
136
  - Gemfile.lock
136
137
  - LICENSE
@@ -144,7 +145,10 @@ files:
144
145
  - lib/remnant/railtie.rb
145
146
  - lib/remnant/version.rb
146
147
  - remnant.gemspec
148
+ - spec/app/some/klass.rb
149
+ - spec/app/some/module.rb
147
150
  - spec/base_spec.rb
151
+ - spec/discover_spec.rb
148
152
  - spec/spec_helper.rb
149
153
  - spec/support/rr.rb
150
154
  homepage: https://github.com/asceth/remnant
@@ -172,6 +176,9 @@ signing_key:
172
176
  specification_version: 3
173
177
  summary: Rails statistical discoverer
174
178
  test_files:
179
+ - spec/app/some/klass.rb
180
+ - spec/app/some/module.rb
175
181
  - spec/base_spec.rb
182
+ - spec/discover_spec.rb
176
183
  - spec/spec_helper.rb
177
184
  - spec/support/rr.rb