Skip to content

Commit aa977ac

Browse files
authored
Merge pull request #149 from gogiel/configuration
Storage pool size configuration
2 parents 7b5af66 + b47fae6 commit aa977ac

File tree

5 files changed

+39
-6
lines changed

5 files changed

+39
-6
lines changed

meta_request/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ If you're using [LiveReload](http://livereload.com/) or
2323
exclude watching your tmp/ folder because meta_request writes a lot of data there
2424
and your browser will refresh like a madman.
2525

26+
## Configuration
27+
28+
Gem can be configured using block:
29+
30+
```ruby
31+
MetaRequest.configure do |config|
32+
config.storage_pool_size = 30
33+
end
34+
```
35+
36+
List of available attributes and defaults can be found in [lib/meta_request/config.rb](lib/meta_request/config.rb).
37+
2638
## Development
2739

2840
Run tests:

meta_request/lib/meta_request.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
module MetaRequest
22
autoload :VERSION, "meta_request/version"
3+
autoload :Config, "meta_request/config"
34
autoload :Event, "meta_request/event"
45
autoload :AppRequest, "meta_request/app_request"
56
autoload :Storage, "meta_request/storage"
67
autoload :Middlewares, "meta_request/middlewares"
78
autoload :LogInterceptor, "meta_request/log_interceptor"
89
autoload :AppNotifications, "meta_request/app_notifications"
910

10-
def self.logger
11-
@@logger ||= Logger.new(File.join(Rails.root, 'log', 'meta_request.log'))
11+
def self.config
12+
@config ||= Config.new
13+
end
14+
15+
def self.configure
16+
yield config
1217
end
1318

1419
# stash a frozen copy away so we're not allocating a new string over and over
1520
# again in AppNotifications and LogInterceptor
1621
def self.rails_root
17-
@@rails_root ||= Rails.root.to_s.freeze
22+
@rails_root ||= Rails.root.to_s.freeze
1823
end
1924
end
2025

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module MetaRequest
2+
class Config
3+
attr_accessor :logger, :storage_pool_size
4+
5+
# logger used for reporting gem's fatal errors
6+
def logger
7+
@logger ||= Logger.new(File.join(Rails.root, 'log', 'meta_request.log'))
8+
end
9+
10+
# Number of files kept in storage.
11+
# Increase when using an application loading many simultaneous requests.
12+
def storage_pool_size
13+
@storage_pool_size ||= 20
14+
end
15+
end
16+
end

meta_request/lib/meta_request/log_interceptor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def push_event(level, message)
4343
AppRequest.current.events << Event.new('meta_request.log', 0, 0, 0, payload)
4444
end
4545
rescue Exception => e
46-
MetaRequest.logger.fatal(e.message + "\n " + e.backtrace.join("\n "))
46+
MetaRequest.config.logger.fatal(e.message + "\n " + e.backtrace.join("\n "))
4747
end
4848
end
4949
end

meta_request/lib/meta_request/storage.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def initialize(key)
99
def write(value)
1010
FileUtils.mkdir_p dir_path
1111
File.open(json_file, 'wb') { |file| file.write(value) }
12-
maintain_file_pool(10)
12+
maintain_file_pool(MetaRequest.config.storage_pool_size)
1313
end
1414

1515
def read
@@ -27,7 +27,7 @@ def maintain_file_pool(size)
2727
end
2828

2929
def file_ctime(file)
30-
File.stat(file).ctime.to_i
30+
File.stat(file).ctime.to_i
3131
rescue Errno::ENOENT
3232
0
3333
end

0 commit comments

Comments
 (0)