def evaluate_file(file_path)
      config_file_code = "proc{ #{File.read(file_path)} }"
      config_file_proc = eval(config_file_code, TOPLEVEL_BINDING, file_path, 0)
      self.instance_eval(&config_file_proc)
    end
def evaluate_file(file_path)
      config_file_code = "proc{ #{File.read(file_path)} }"
      config_file_proc = eval(config_file_code, TOPLEVEL_BINDING, file_path, 0)
      self.instance_eval(&config_file_proc)
    end
This evaluates the file and creates a proc using its contents. This is
 a trick borrowed from Rack. It is essentially converting a file into a
 proc and then instance eval'ing it. This has a couple benefits:
 * The obvious benefit is the file is evaluated in the context of this
   class. This allows the file to call `run`, setting the daemon that
   will be used.
 * The other benefit is that the file's contents behave like they were a
   proc defined by the user. Instance eval'ing the file directly, makes
   any constants (modules/classes) defined in it namespaced by the
   instance of the config (not namespaced by `Qs::ConfigFile`,
   they are actually namespaced by an instance of this class, its like
   accessing it via `ConfigFile.new::MyDaemon`), which is very confusing.
   Thus, the proc is created and eval'd using the `TOPLEVEL_BINDING`,
   which defines the constants at the top-level, as would be expected.