Don't put MemoryLimit class in the OSM module as it breaks autoloading

This commit is contained in:
Tom Hughes 2010-07-19 18:15:40 +01:00
parent 5e2b8d087c
commit 723cb57e6d

View file

@ -7,38 +7,36 @@ end
# configured then setup some rack middleware to police the limit
if APP_CONFIG.include?('soft_memory_limit') and defined?(PhusionPassenger)
# Define some rack middleware to police the soft memory limit
module OSM
class MemoryLimit
def initialize(app)
@app = app
class MemoryLimit
def initialize(app)
@app = app
end
def call(env)
# Process this requst
status, headers, body = @app.call(env)
# Restart if we've hit our memory limit
if resident_size > APP_CONFIG['soft_memory_limit']
Process.kill("USR1", 0)
end
def call(env)
# Process this requst
status, headers, body = @app.call(env)
# Restart if we've hit our memory limit
if resident_size > APP_CONFIG['soft_memory_limit']
Process.kill("USR1", 0)
end
# Return the result of this request
[status, headers, body]
# Return the result of this request
[status, headers, body]
end
private
def resident_size
# Read statm to get process sizes. Format is
# Size RSS Shared Text Lib Data
fields = File.open("/proc/self/statm") do |file|
fields = file.gets.split(" ")
end
private
def resident_size
# Read statm to get process sizes. Format is
# Size RSS Shared Text Lib Data
fields = File.open("/proc/self/statm") do |file|
fields = file.gets.split(" ")
end
# Return resident size in megabytes
return fields[1].to_i / 256
end
# Return resident size in megabytes
return fields[1].to_i / 256
end
end
# Install the memory limit checker
Rails.configuration.middleware.use OSM::MemoryLimit
Rails.configuration.middleware.use MemoryLimit
end