#!/usr/bin/env ruby # establish database connection before including JamRuby require 'active_record' bin_dir = File.expand_path(File.dirname(__FILE__)) app_config_file = File.join(bin_dir, '..', 'config', 'application.yml') db_config_file = File.join(bin_dir, '..', 'config', 'database.yml') jamenv = ENV['JAMENV'] jamenv ||= 'development' ENV['RUBY_ENV'] = ENV['RAILS_ENV'] = jamenv # set RUBY_ENV so that newrelic can find the mode config = YAML::load(File.open(app_config_file))[jamenv] db_config = YAML::load(File.open(db_config_file))[jamenv] ActiveRecord::Base.establish_connection(db_config) jam_instance = ENV['JAM_INSTANCE'] || 1 jam_instance = jam_instance.to_i if jam_instance == 0 puts "JAM INSTANCE MUST BE > 0" exit 1 end # now bring in the Jam code require 'jam_websockets' include JamWebsockets # run some method if config["verbose"] Logging.logger.root.level = :debug else Logging.logger.root.level = :info end require "#{Dir.pwd}/config/application.rb" if jamenv == "production" ENV['NEW_RELIC_LOG'] = "/var/log/websocket-gateway/newrelic_agent-#{jam_instance}.log" one_meg = 1024 * 1024 Logging.logger.root.appenders = Logging.appenders.rolling_file("/var/log/websocket-gateway/#{jamenv}-#{jam_instance}.log", :truncate=>true, :age=>'daily', :size=>one_meg, :keep=>20, :layout => Logging.layouts.pattern(:pattern => '[%d] %-5l: %m\n')) else ENV['NEW_RELIC_LOG'] = "#{Dir.pwd}/log/newrelic_agent-#{jam_instance}.log" Logging.logger.root.appenders = Logging.appenders.stdout end # start monitoring ENV['NRCONFIG'] = "#{Dir.pwd}/config/newrelic.yml" require 'newrelic_rpm' Object.send(:remove_const, :Rails) # this is to 'fool' new relic into not thinking this is a Rails app. ::NewRelic::Agent.manual_start # determine gateway_name gateway_name = ENV['GATEWAY_NAME'] || 'default' gateway_name = "#{gateway_name}-#{jam_instance}" Server.new.run(:port => config["port"] + (jam_instance-1 ) * 2, :emwebsocket_debug => config["emwebsocket_debug"], :connect_time_stale_client => config["connect_time_stale_client"], :connect_time_expire_client => config["connect_time_expire_client"], :connect_time_stale_browser => config["connect_time_stale_browser"], :connect_time_expire_browser => config["connect_time_expire_browser"], :max_connections_per_user => config["max_connections_per_user"], :rabbitmq_host => config['rabbitmq_host'], :rabbitmq_port => config['rabbitmq_port'], :cidr => config['cidr'], :gateway_name => gateway_name)