traceview 3.0.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +13 -0
- data/README.md +5 -6
- data/lib/oboe/backward_compatibility.rb +3 -1
- data/lib/traceview.rb +1 -1
- data/lib/traceview/base.rb +4 -0
- data/lib/traceview/inst/{cassandra.rb → twitter-cassandra.rb} +6 -1
- data/lib/traceview/method_profiling.rb +14 -1
- data/lib/traceview/version.rb +1 -1
- data/test/frameworks/rails2x_test.rb +88 -0
- data/test/instrumentation/rack_test.rb +2 -0
- data/test/minitest_helper.rb +8 -2
- data/test/servers/rails2x_8140.rb +171 -0
- data/test/support/liboboe_settings_test.rb +2 -0
- data/test/support/tvalias_test.rb +12 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1e1fce5cc9601903a20f38d1d66424f549d9caa
|
4
|
+
data.tar.gz: 547a5da33eaf472559db809114f729e76f750ea6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6640210e54a074aaad59c1578c2bd0597c1cce72c43188dad529b44bb0974e86e911f8a01e0d05b1ff48bc4706b5d477029e655cab61704b4fafd08bda8bf8c
|
7
|
+
data.tar.gz: d59779a9c4b955505302644970018ffe8751e363b676ba67e15dc157433c2d544a9f87fb76965e674fa91e8d72f078cdbf1e4dca376e9eb3d0d6740934830503
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,19 @@ https://github.com/appneta/oboe-ruby/releases
|
|
4
4
|
|
5
5
|
Dates in this file are in the format MM/DD/YYYY.
|
6
6
|
|
7
|
+
# traceview 3.0.2
|
8
|
+
|
9
|
+
This patch release includes the following fixes:
|
10
|
+
|
11
|
+
* Add alternate module capitalization for easiness: #126
|
12
|
+
* Cassandra instrumentation loading for wrong client: #125
|
13
|
+
* Fix broken no-op mode when missing host libs: #124
|
14
|
+
|
15
|
+
Pushed to Rubygems:
|
16
|
+
|
17
|
+
https://rubygems.org/gems/traceview/versions/3.0.2
|
18
|
+
https://rubygems.org/gems/traceview/versions/3.0.2-java
|
19
|
+
|
7
20
|
# traceview 3.0.1
|
8
21
|
|
9
22
|
This patch release includes the following fix:
|
data/README.md
CHANGED
@@ -8,8 +8,7 @@ It has the ability to report performance metrics on an array of libraries, datab
|
|
8
8
|
|
9
9
|
It requires a [TraceView](http://www.appneta.com/products/traceview/) account to view metrics. Get yours, [it's free](http://www.appneta.com/products/traceview-free-account/).
|
10
10
|
|
11
|
-
[![
|
12
|
-
[![Gem Version](https://badge.fury.io/rb/oboe.png)](http://badge.fury.io/rb/oboe)
|
11
|
+
[![Gem Version](https://badge.fury.io/rb/traceview.png)](http://badge.fury.io/rb/traceview)
|
13
12
|
[![Build Status](https://travis-ci.org/appneta/oboe-ruby.png?branch=master)](https://travis-ci.org/appneta/oboe-ruby)
|
14
13
|
[![Code Climate](https://codeclimate.com/github/appneta/oboe-ruby.png)](https://codeclimate.com/github/appneta/oboe-ruby)
|
15
14
|
|
@@ -174,7 +173,7 @@ This tracing state of a request can also be queried by using `TraceView.tracing?
|
|
174
173
|
|
175
174
|
If you need to instrument code outside the context of a request (such as a cron job, background job or an arbitrary ruby script), use `TraceView::API.start_trace` instead which will initiate new traces based on configuration and probability (based on the sample rate).
|
176
175
|
|
177
|
-
Find more details in the [RubyDoc page](http://rdoc.info/gems/
|
176
|
+
Find more details in the [RubyDoc page](http://rdoc.info/gems/traceview/TraceView/API/Tracing) or in [this example](https://gist.github.com/pglombardo/8550713) on how to use the Tracing API in an independent Ruby script.
|
178
177
|
|
179
178
|
## Tracing Methods
|
180
179
|
|
@@ -187,12 +186,12 @@ The pattern for Method Profiling is as follows:
|
|
187
186
|
# It identifies this custom trace in your dashboard.
|
188
187
|
#
|
189
188
|
class Engine
|
190
|
-
include TraceViewMethodProfiling
|
191
|
-
|
192
189
|
def processor()
|
193
190
|
# body of method
|
194
191
|
end
|
195
|
-
|
192
|
+
|
193
|
+
include TraceViewMethodProfiling
|
194
|
+
|
196
195
|
# call syntax: profile_method <method>, <profile_name>
|
197
196
|
profile_method :processor, 'processor'
|
198
197
|
end
|
data/lib/traceview.rb
CHANGED
data/lib/traceview/base.rb
CHANGED
@@ -250,7 +250,12 @@ module TraceView
|
|
250
250
|
end
|
251
251
|
end
|
252
252
|
|
253
|
-
|
253
|
+
# There are two main Cassandra clients for Ruby. This one from Twitter
|
254
|
+
# and the other from datastax. This one defined ::Cassandra as a class
|
255
|
+
# and datastax defines it as a module. We use this to detect
|
256
|
+
# and differentiate between the client in use.
|
257
|
+
|
258
|
+
if defined?(::Cassandra) && ::Cassandra.is_a?(Class) && TraceView::Config[:cassandra][:enabled]
|
254
259
|
TraceView.logger.info '[traceview/loading] Instrumenting cassandra' if TraceView::Config[:verbose]
|
255
260
|
|
256
261
|
class ::Cassandra
|
@@ -22,7 +22,11 @@ module TraceViewMethodProfiling
|
|
22
22
|
end
|
23
23
|
|
24
24
|
module ClassMethods
|
25
|
-
def
|
25
|
+
def profile_method_noop(*args)
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def profile_method_real(method_name, profile_name, store_args = false, store_return = false, *_)
|
26
30
|
begin
|
27
31
|
# this only gets file and line where profiling is turned on, presumably
|
28
32
|
# right after the function definition. ruby 1.9 and 2.0 has nice introspection (Method.source_location)
|
@@ -80,5 +84,14 @@ module TraceViewMethodProfiling
|
|
80
84
|
TraceView.logger.warn "[traceview/warn] Fatal error profiling method (#{method_name}): #{e.inspect}" if TraceView::Config[:verbose]
|
81
85
|
end
|
82
86
|
end
|
87
|
+
|
88
|
+
# This allows this module to be included and called even if the gem is in
|
89
|
+
# no-op mode (no base libraries).
|
90
|
+
if TraceView.loaded
|
91
|
+
alias :profile_method :profile_method_real
|
92
|
+
else
|
93
|
+
alias :profile_method :profile_method_noop
|
94
|
+
end
|
95
|
+
|
83
96
|
end
|
84
97
|
end
|
data/lib/traceview/version.rb
CHANGED
@@ -0,0 +1,88 @@
|
|
1
|
+
require "minitest_helper"
|
2
|
+
|
3
|
+
if defined?(::Rails)
|
4
|
+
|
5
|
+
describe "Rails" do
|
6
|
+
before do
|
7
|
+
clear_all_traces
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should trace a request to a rails stack" do
|
11
|
+
|
12
|
+
uri = URI.parse('http://127.0.0.1:8140/hello/world')
|
13
|
+
r = Net::HTTP.get_response(uri)
|
14
|
+
|
15
|
+
traces = get_all_traces
|
16
|
+
|
17
|
+
traces.count.must_equal 8
|
18
|
+
valid_edges?(traces).must_equal true
|
19
|
+
validate_outer_layers(traces, 'rack')
|
20
|
+
|
21
|
+
traces[0]['Layer'].must_equal "rack"
|
22
|
+
traces[0]['Label'].must_equal "entry"
|
23
|
+
traces[0]['URL'].must_equal "/hello/world"
|
24
|
+
|
25
|
+
traces[1]['Layer'].must_equal "rack"
|
26
|
+
traces[1]['Label'].must_equal "info"
|
27
|
+
|
28
|
+
traces[2]['Layer'].must_equal "rails"
|
29
|
+
traces[2]['Label'].must_equal "entry"
|
30
|
+
|
31
|
+
traces[3]['Label'].must_equal "info"
|
32
|
+
traces[3]['Controller'].must_equal "HelloController"
|
33
|
+
traces[3]['Action'].must_equal "world"
|
34
|
+
|
35
|
+
traces[4]['Layer'].must_equal "actionview"
|
36
|
+
traces[4]['Label'].must_equal "entry"
|
37
|
+
|
38
|
+
traces[5]['Layer'].must_equal "actionview"
|
39
|
+
traces[5]['Label'].must_equal "exit"
|
40
|
+
|
41
|
+
traces[6]['Layer'].must_equal "rails"
|
42
|
+
traces[6]['Label'].must_equal "exit"
|
43
|
+
|
44
|
+
traces[7]['Layer'].must_equal "rack"
|
45
|
+
traces[7]['Label'].must_equal "exit"
|
46
|
+
|
47
|
+
# Validate the existence of the response header
|
48
|
+
r.header.key?('X-Trace').must_equal true
|
49
|
+
r.header['X-Trace'].must_equal traces[7]['X-Trace']
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should trace a request to a rails metal stack" do
|
53
|
+
|
54
|
+
uri = URI.parse('http://127.0.0.1:8140/hello/metal')
|
55
|
+
r = Net::HTTP.get_response(uri)
|
56
|
+
|
57
|
+
traces = get_all_traces
|
58
|
+
|
59
|
+
traces.count.must_equal 5
|
60
|
+
valid_edges?(traces).must_equal true
|
61
|
+
validate_outer_layers(traces, 'rack')
|
62
|
+
|
63
|
+
traces[0]['Layer'].must_equal "rack"
|
64
|
+
traces[0]['Label'].must_equal "entry"
|
65
|
+
traces[0]['URL'].must_equal "/hello/metal"
|
66
|
+
|
67
|
+
traces[1]['Layer'].must_equal "rack"
|
68
|
+
traces[1]['Label'].must_equal "info"
|
69
|
+
|
70
|
+
traces[2]['Label'].must_equal "profile_entry"
|
71
|
+
traces[2]['Language'].must_equal "ruby"
|
72
|
+
traces[2]['ProfileName'].must_equal "world"
|
73
|
+
traces[2]['FunctionName'].must_equal "world"
|
74
|
+
traces[2]['Class'].must_equal "FerroController"
|
75
|
+
|
76
|
+
traces[3]['Label'].must_equal "profile_exit"
|
77
|
+
traces[3]['Language'].must_equal "ruby"
|
78
|
+
traces[3]['ProfileName'].must_equal "world"
|
79
|
+
|
80
|
+
traces[4]['Layer'].must_equal "rack"
|
81
|
+
traces[4]['Label'].must_equal "exit"
|
82
|
+
|
83
|
+
# Validate the existence of the response header
|
84
|
+
r.header.key?('X-Trace').must_equal true
|
85
|
+
r.header['X-Trace'].must_equal traces[4]['X-Trace']
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
data/test/minitest_helper.rb
CHANGED
@@ -47,7 +47,9 @@ require "./test/servers/rackapp_8101"
|
|
47
47
|
# Truncates the trace output file to zero
|
48
48
|
#
|
49
49
|
def clear_all_traces
|
50
|
-
TraceView
|
50
|
+
if TraceView.loaded
|
51
|
+
TraceView::Reporter.clear_all_traces
|
52
|
+
end
|
51
53
|
end
|
52
54
|
|
53
55
|
##
|
@@ -56,7 +58,11 @@ end
|
|
56
58
|
# Retrieves all traces written to the trace file
|
57
59
|
#
|
58
60
|
def get_all_traces
|
59
|
-
TraceView
|
61
|
+
if TraceView.loaded
|
62
|
+
TraceView::Reporter.get_all_traces
|
63
|
+
else
|
64
|
+
[]
|
65
|
+
end
|
60
66
|
end
|
61
67
|
|
62
68
|
##
|
@@ -0,0 +1,171 @@
|
|
1
|
+
# Don't change this file!
|
2
|
+
# Configure your app in config/environment.rb and config/environments/*.rb
|
3
|
+
|
4
|
+
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
|
5
|
+
|
6
|
+
require 'actionpack'
|
7
|
+
require 'actionpack'
|
8
|
+
|
9
|
+
module Rails
|
10
|
+
class << self
|
11
|
+
def boot!
|
12
|
+
unless booted?
|
13
|
+
preinitialize
|
14
|
+
pick_boot.run
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def booted?
|
19
|
+
defined? Rails::Initializer
|
20
|
+
end
|
21
|
+
|
22
|
+
def pick_boot
|
23
|
+
(vendor_rails? ? VendorBoot : GemBoot).new
|
24
|
+
end
|
25
|
+
|
26
|
+
def vendor_rails?
|
27
|
+
File.exist?("#{RAILS_ROOT}/vendor/rails")
|
28
|
+
end
|
29
|
+
|
30
|
+
def preinitialize
|
31
|
+
load(preinitializer_path) if File.exist?(preinitializer_path)
|
32
|
+
end
|
33
|
+
|
34
|
+
def preinitializer_path
|
35
|
+
"#{RAILS_ROOT}/config/preinitializer.rb"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class Boot
|
40
|
+
def run
|
41
|
+
load_initializer
|
42
|
+
Rails::Initializer.run(:set_load_path)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class VendorBoot < Boot
|
47
|
+
def load_initializer
|
48
|
+
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
|
49
|
+
Rails::Initializer.run(:install_gem_spec_stubs)
|
50
|
+
Rails::GemDependency.add_frozen_gem_path
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class GemBoot < Boot
|
55
|
+
def load_initializer
|
56
|
+
self.class.load_rubygems
|
57
|
+
load_rails_gem
|
58
|
+
require 'initializer'
|
59
|
+
end
|
60
|
+
|
61
|
+
def load_rails_gem
|
62
|
+
if version = self.class.gem_version
|
63
|
+
gem 'rails', version
|
64
|
+
else
|
65
|
+
gem 'rails'
|
66
|
+
end
|
67
|
+
rescue Gem::LoadError => load_error
|
68
|
+
if load_error.message =~ /Could not find RubyGem rails/
|
69
|
+
STDERR.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
70
|
+
exit 1
|
71
|
+
else
|
72
|
+
raise
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class << self
|
77
|
+
def rubygems_version
|
78
|
+
Gem::RubyGemsVersion rescue nil
|
79
|
+
end
|
80
|
+
|
81
|
+
def gem_version
|
82
|
+
if defined? RAILS_GEM_VERSION
|
83
|
+
RAILS_GEM_VERSION
|
84
|
+
elsif ENV.include?('RAILS_GEM_VERSION')
|
85
|
+
ENV['RAILS_GEM_VERSION']
|
86
|
+
else
|
87
|
+
parse_gem_version(read_environment_rb)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def load_rubygems
|
92
|
+
min_version = '1.3.2'
|
93
|
+
require 'rubygems'
|
94
|
+
unless rubygems_version >= min_version
|
95
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
96
|
+
exit 1
|
97
|
+
end
|
98
|
+
|
99
|
+
rescue LoadError
|
100
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
101
|
+
exit 1
|
102
|
+
end
|
103
|
+
|
104
|
+
def parse_gem_version(text)
|
105
|
+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
def read_environment_rb
|
110
|
+
File.read("#{RAILS_ROOT}/config/environment.rb")
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
class Rails::Boot
|
117
|
+
def run
|
118
|
+
load_initializer
|
119
|
+
|
120
|
+
Rails::Initializer.class_eval do
|
121
|
+
def load_gems
|
122
|
+
@bundler_loaded ||= Bundler.require :default, Rails.env
|
123
|
+
Oboe::Config[:verbose] = true
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
Rails::Initializer.run(:set_load_path)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
TraceView.logger.info "[traceview/info] Starting background utility rails app on localhost:8140."
|
132
|
+
|
133
|
+
ActionController::Routing::Routes.draw do |map|
|
134
|
+
map.connect '/hello/metal', :controller => 'ferro', :action => 'world'
|
135
|
+
map.connect ':controller/:action/:id'
|
136
|
+
map.connect ':controller/:action/:id.:format'
|
137
|
+
end
|
138
|
+
|
139
|
+
Rails::Initializer.run do |config|
|
140
|
+
config.log_level = :debug
|
141
|
+
end
|
142
|
+
|
143
|
+
#################################################
|
144
|
+
# Controllers
|
145
|
+
#################################################
|
146
|
+
|
147
|
+
class HelloController < ActionController::Base
|
148
|
+
def world
|
149
|
+
render :text => "Hello world!"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
class FerroController < ActionController::Metal
|
154
|
+
include AbstractController::Rendering
|
155
|
+
|
156
|
+
def world
|
157
|
+
render :text => "Hello world!"
|
158
|
+
end
|
159
|
+
|
160
|
+
include TraceViewMethodProfiling
|
161
|
+
profile_method :world, 'world'
|
162
|
+
end
|
163
|
+
|
164
|
+
#Thread.new do
|
165
|
+
#Rack::Handler::Puma.run(Rails23Stack.to_app, {:Host => '127.0.0.1', :Port => 8140})
|
166
|
+
# All that for this:
|
167
|
+
Rails.boot!
|
168
|
+
|
169
|
+
#end
|
170
|
+
|
171
|
+
sleep(2)
|
@@ -23,6 +23,8 @@ unless defined?(JRUBY_VERSION)
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_localset_sample_source
|
26
|
+
skip("FIXME: broken on travis only") if ENV['TRAVIS'] == "true"
|
27
|
+
|
26
28
|
# We make an initial call here which will force the traceview gem to retrieve
|
27
29
|
# the sample_rate and sample_source from liboboe (via sample? method)
|
28
30
|
get "/lobster"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
class TVAliasTest < Minitest::Test
|
4
|
+
|
5
|
+
def test_responds_various_capitalization
|
6
|
+
defined?(::TraceView).must_equal "constant"
|
7
|
+
defined?(::Traceview).must_equal "constant"
|
8
|
+
|
9
|
+
TraceView.methods.count.must_equal Traceview.methods.count
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traceview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-06-
|
12
|
+
date: 2015-06-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -115,7 +115,6 @@ files:
|
|
115
115
|
- lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb
|
116
116
|
- lib/traceview/frameworks/sinatra.rb
|
117
117
|
- lib/traceview/frameworks/sinatra/templates.rb
|
118
|
-
- lib/traceview/inst/cassandra.rb
|
119
118
|
- lib/traceview/inst/dalli.rb
|
120
119
|
- lib/traceview/inst/em-http-request.rb
|
121
120
|
- lib/traceview/inst/excon.rb
|
@@ -131,6 +130,7 @@ files:
|
|
131
130
|
- lib/traceview/inst/resque.rb
|
132
131
|
- lib/traceview/inst/rest-client.rb
|
133
132
|
- lib/traceview/inst/sequel.rb
|
133
|
+
- lib/traceview/inst/twitter-cassandra.rb
|
134
134
|
- lib/traceview/inst/typhoeus.rb
|
135
135
|
- lib/traceview/instrumentation.rb
|
136
136
|
- lib/traceview/loading.rb
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- test/frameworks/apps/sinatra_simple.rb
|
149
149
|
- test/frameworks/grape_test.rb
|
150
150
|
- test/frameworks/padrino_test.rb
|
151
|
+
- test/frameworks/rails2x_test.rb
|
151
152
|
- test/frameworks/sinatra_test.rb
|
152
153
|
- test/instrumentation/cassandra_test.rb
|
153
154
|
- test/instrumentation/dalli_test.rb
|
@@ -177,10 +178,12 @@ files:
|
|
177
178
|
- test/minitest_helper.rb
|
178
179
|
- test/profiling/method_test.rb
|
179
180
|
- test/servers/rackapp_8101.rb
|
181
|
+
- test/servers/rails2x_8140.rb
|
180
182
|
- test/support/backcompat_test.rb
|
181
183
|
- test/support/config_test.rb
|
182
184
|
- test/support/dnt_test.rb
|
183
185
|
- test/support/liboboe_settings_test.rb
|
186
|
+
- test/support/tvalias_test.rb
|
184
187
|
- test/support/xtrace_test.rb
|
185
188
|
- traceview.gemspec
|
186
189
|
homepage: http://www.appneta.com/products/traceview/
|
@@ -208,6 +211,7 @@ signing_key:
|
|
208
211
|
specification_version: 4
|
209
212
|
summary: AppNeta TraceView performance instrumentation gem for Ruby
|
210
213
|
test_files:
|
214
|
+
- test/servers/rails2x_8140.rb
|
211
215
|
- test/servers/rackapp_8101.rb
|
212
216
|
- test/instrumentation/excon_test.rb
|
213
217
|
- test/instrumentation/sequel_pg_test.rb
|
@@ -242,8 +246,10 @@ test_files:
|
|
242
246
|
- test/frameworks/sinatra_test.rb
|
243
247
|
- test/frameworks/grape_test.rb
|
244
248
|
- test/frameworks/padrino_test.rb
|
249
|
+
- test/frameworks/rails2x_test.rb
|
245
250
|
- test/support/config_test.rb
|
246
251
|
- test/support/dnt_test.rb
|
252
|
+
- test/support/tvalias_test.rb
|
247
253
|
- test/support/liboboe_settings_test.rb
|
248
254
|
- test/support/backcompat_test.rb
|
249
255
|
- test/support/xtrace_test.rb
|