Index: backgroundrb/script/backgroundrb =================================================================== --- backgroundrb/script/backgroundrb (revision 6964) +++ backgroundrb/script/backgroundrb (revision 7064) @@ -9,11 +9,8 @@ $LOAD_PATH.unshift(WORKER_ROOT) -require RAILS_HOME + '/config/boot.rb' - # parse CLI options and set RAILS_ENV before loading RoR environment require "bdrb_config.rb" BackgrounDRb::Config.parse_cmd_options ARGV -require RAILS_HOME + '/config/environment' require "rubygems" require "yaml" Index: backgroundrb/server/lib/meta_worker.rb =================================================================== --- backgroundrb/server/lib/meta_worker.rb (revision 6964) +++ backgroundrb/server/lib/meta_worker.rb (revision 7064) @@ -346,9 +346,13 @@ private + def load_rails_env db_config_file = YAML.load(ERB.new(IO.read("#{RAILS_HOME}/config/database.yml")).result) run_env = @config_file[:backgroundrb][:environment] || 'development' + ENV["RAILS_ENV"] = run_env RAILS_ENV.replace(run_env) if defined?(RAILS_ENV) + + require RAILS_HOME + '/config/environment' ActiveRecord::Base.establish_connection(db_config_file[run_env]) ActiveRecord::Base.allow_concurrency = true Index: backgroundrb/server/lib/master_worker.rb =================================================================== --- backgroundrb/server/lib/master_worker.rb (revision 6964) +++ backgroundrb/server/lib/master_worker.rb (revision 7064) @@ -1,3 +1,7 @@ #!/usr/bin/env ruby + +class MissingSourceFile < LoadError +end + module BackgrounDRb # Class wraps a logger object for debugging internal errors within server @@ -152,4 +156,6 @@ class MasterProxy + include Packet::NbioHelper + attr_accessor :config_file,:reloadable_workers,:worker_triggers,:reactor def initialize @@ -159,6 +165,4 @@ log_flag = CONFIG_FILE[:backgroundrb][:debug_log].nil? ? true : CONFIG_FILE[:backgroundrb][:debug_log] debug_logger = DebugMaster.new(CONFIG_FILE[:backgroundrb][:log],log_flag) - - load_rails_env find_reloadable_worker @@ -170,4 +174,5 @@ t_reactor.start_server(CONFIG_FILE[:backgroundrb][:ip],CONFIG_FILE[:backgroundrb][:port],MasterWorker) { |conn| conn.debug_logger = debug_logger } t_reactor.next_turn { reload_workers } + yield(self) if block_given? end end @@ -177,5 +182,4 @@ return "#{worker_name}_#{job_key}".to_sym end - # method should find reloadable workers and load their schedule from config file @@ -185,5 +189,5 @@ worker_name = File.basename(x,".rb") require worker_name - worker_klass = Object.const_get(worker_name.classify) + worker_klass = Object.const_get(packet_classify(worker_name)) worker_klass.reload_flag ? worker_klass : nil end.compact @@ -256,30 +260,4 @@ return end - end - - def load_rails_env - db_config_file = YAML.load(ERB.new(IO.read("#{RAILS_HOME}/config/database.yml")).result) - run_env = CONFIG_FILE[:backgroundrb][:environment] || 'development' - ENV["RAILS_ENV"] = run_env - RAILS_ENV.replace(run_env) if defined?(RAILS_ENV) - require RAILS_HOME + '/config/environment.rb' - lazy_load = CONFIG_FILE[:backgroundrb][:lazy_load].nil? ? true : CONFIG_FILE[:backgroundrb][:lazy_load].nil? - p lazy_load - load_rails_models unless lazy_load - ActiveRecord::Base.allow_concurrency = true - end - - def load_rails_models - model_root = RAILS_HOME + "/app/models" - models = Dir["#{model_root}/**/*.rb"] - models.each { |x| - begin - require x - rescue LoadError - next - rescue MissingSourceFile - next - end - } end Index: backgroundrb/lib/backgroundrb/bdrb_config.rb =================================================================== --- backgroundrb/lib/backgroundrb/bdrb_config.rb (revision 6964) +++ backgroundrb/lib/backgroundrb/bdrb_config.rb (revision 7064) @@ -23,5 +23,4 @@ ENV["RAILS_ENV"] = options[:environment] - RAILS_ENV.replace(options[:environment]) if defined?(RAILS_ENV) end @@ -29,5 +28,5 @@ config = YAML.load(ERB.new(IO.read(config_file)).result) - environment = RAILS_ENV.to_sym + environment = ENV["RAILS_ENV"].to_sym if config[environment]