remnant 0.1.3 → 0.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/.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