Skip to content

Commit 80195e8

Browse files
committed
Allow callers from some files to be ignored
1 parent b912cb3 commit 80195e8

File tree

6 files changed

+96
-4
lines changed

6 files changed

+96
-4
lines changed

README.md

+9
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ Select your editor on the extension options page: chrome://extensions. Following
3737
* Atom
3838
* RubyMine
3939

40+
## Meta Request Configuration
41+
42+
If the ActiveRecord caller locations are including files you don't want, you can exclude those files by adding them to the configuration in config/meta_request.yml. Files in the backtrace that match a regex in the ingore paths list will be skipped.
43+
44+
```yaml
45+
:ignore_paths:
46+
- .*/directory/exclude_this_file
47+
```
48+
4049
## Compatibility Warnings
4150
4251
If you're using [LiveReload](http://livereload.com/) or

meta_request/lib/meta_request.rb

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module MetaRequest
66
autoload :Middlewares, "meta_request/middlewares"
77
autoload :LogInterceptor, "meta_request/log_interceptor"
88
autoload :AppNotifications, "meta_request/app_notifications"
9+
autoload :Config, "meta_request/config"
910

1011
def self.logger
1112
@@logger ||= Logger.new(File.join(Rails.root, 'log', 'meta_request.log'))

meta_request/lib/meta_request/app_notifications.rb

+7-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class AppNotifications
2424
payload[:options][k] = payload.delete(k) unless k.in? CACHE_KEY_COLUMNS
2525
end
2626

27-
dev_caller = caller.detect { |c| c.include? MetaRequest.rails_root }
27+
dev_caller = caller.detect { |c| is_dev_caller(c) }
2828
if dev_caller
2929
c = Callsite.parse(dev_caller)
3030
payload.merge!(:line => c.line, :filename => c.filename, :method => c.method)
@@ -39,7 +39,7 @@ def self.subscribe
3939
subscribe("meta_request.log").
4040
subscribe("sql.active_record") do |*args|
4141
name, start, ending, transaction_id, payload = args
42-
dev_caller = caller.detect { |c| c.include? MetaRequest.rails_root }
42+
dev_caller = caller.detect { |c| is_dev_caller(c) }
4343
if dev_caller
4444
c = Callsite.parse(dev_caller)
4545
payload.merge!(:line => c.line, :filename => c.filename, :method => c.method)
@@ -71,6 +71,10 @@ def subscribe(event_name)
7171
self
7272
end
7373

74-
end
74+
private
7575

76+
def self.is_dev_caller(file_path)
77+
file_path.include?(MetaRequest.rails_root) && !Config.ignored_path?(file_path)
78+
end
79+
end
7680
end
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
require 'yaml'
2+
3+
module MetaRequest
4+
module Config
5+
def self.ignored_path?(file_path)
6+
ingore_paths.any? { |ignore_path| ignore_path.match(file_path) }
7+
end
8+
9+
private
10+
11+
def self.ingore_paths
12+
config_file[:ignore_paths]
13+
end
14+
15+
def self.config_file
16+
@@config_file ||= load_and_parse_config_file
17+
end
18+
19+
def self.load_and_parse_config_file
20+
@@config_file = load_config_file
21+
@@config_file[:ignore_paths] ||= []
22+
@@config_file[:ignore_paths].map! do |ignore_path|
23+
Regexp.new(ignore_path)
24+
end
25+
@@config_file.freeze
26+
end
27+
28+
def self.load_config_file
29+
YAML.load_file("#{MetaRequest.rails_root}/config/meta_request.yml") || {}
30+
rescue Errno::ENOENT
31+
{}
32+
end
33+
end
34+
end
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module MetaRequest
2-
VERSION = '0.4.2'
2+
VERSION = '0.4.3'
33
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
require 'test_helper'
2+
require 'tempfile'
3+
require 'fileutils'
4+
5+
describe MetaRequest::Config do
6+
CONFIG_DIRECTORY = "#{MetaRequest.rails_root}/config"
7+
CONFIG_FILE_PATH = "#{CONFIG_DIRECTORY}/meta_request.yml"
8+
9+
def write_config_file(config)
10+
file = File.new(CONFIG_FILE_PATH, "w")
11+
file.write(config.to_yaml)
12+
file.close
13+
end
14+
15+
describe 'config_file' do
16+
before(:each) do
17+
FileUtils.mkdir_p(CONFIG_DIRECTORY)
18+
end
19+
20+
after(:each) do
21+
FileUtils.remove_dir(CONFIG_DIRECTORY, force: true)
22+
MetaRequest::Config.class_variable_set(:@@config_file, nil)
23+
end
24+
25+
it 'provides default config when config file is not present' do
26+
assert_equal [], MetaRequest::Config.config_file[:ignore_paths]
27+
end
28+
29+
it 'provides default config when config file is empty' do
30+
write_config_file(nil)
31+
assert_equal [], MetaRequest::Config.config_file[:ignore_paths]
32+
end
33+
34+
it 'converts ignore paths array to regexs' do
35+
config = {
36+
ignore_paths: ['.*files', 'notaregex']
37+
}
38+
expected_ignore_paths = config[:ignore_paths].map { |p| Regexp.new(p) }
39+
write_config_file(config)
40+
assert_equal expected_ignore_paths, MetaRequest::Config.config_file[:ignore_paths]
41+
end
42+
end
43+
end
44+

0 commit comments

Comments
 (0)