class FocusCommon::AppInfo

Public Instance Methods

get_database_time_info() click to toggle source
# File lib/focus_common/app_info.rb, line 3
def get_database_time_info
  conn = ActiveRecord::Base.connection
  if conn.class.name.demodulize == 'Mysql2Adapter'
    {zone: conn.execute("SELECT @@global.time_zone, @@session.time_zone;").to_a.flatten,
     time: conn.execute("select concat(now(), '');").to_a.flatten.first,
    }
  else
    {}
  end
end
get_gems() click to toggle source
# File lib/focus_common/app_info.rb, line 69
def get_gems
  Gem::Specification.sort_by{ |g| [g.name.downcase, g.version] }
end
get_info() click to toggle source
# File lib/focus_common/app_info.rb, line 27
def get_info
  db_time_info = self.get_database_time_info
  info = \
  {
    environment: {
      rails: Rails.env,
      stage: ENV['STAGE'],
    },
    version: {
      ruby: RUBY_VERSION,
      rails: Rails::VERSION::STRING,
      git: git_version,
    },
    time: {
      system: {
        time: Time.now.to_s,
        zone: Time.now.zone,
      },
      rails: {
        time: Time.zone.now,
        zone: Time.zone.to_s,
      },
      database: {
        time: db_time_info[:time],
        global_zone: db_time_info[:zone].try(:first),
        session_zone: db_time_info[:zone].try(:second),
      },
    },
    important_gems: get_gems.map{|g| [g.name, g.version]}.to_h.slice('sidekiq'),
  }

  if defined?(CbaDB)
    info[:cba_site] = \
    CbaDB.enabled_sites.map do |site|
      namespace = CbaDB.sites_info.fetch(site, {})[:db_name]
      [site, namespace]
    end.to_h
  end

  info
end
git_version() click to toggle source
# File lib/focus_common/app_info.rb, line 14
def git_version
  if Rails.env.development?
    `git rev-parse HEAD`
  else
    filename = File.join(Rails.root, 'REVISION')
    if File.exists?(filename)
      File.read(filename).strip
    else
      nil
    end
  end
end