require 'uri' module Asciinema class Configuration include Virtus.model attribute :url_scheme, String, default: "http" attribute :url_host, String, default: "localhost" attribute :url_port, Integer, default: 3000 attribute :bugsnag_api_key, String attribute :aws_access_key_id, String attribute :aws_secret_access_key, String attribute :s3_bucket, String attribute :s3_region, String attribute :carrierwave_storage_dir_prefix, String, default: 'uploads/' attribute :google_analytics_id, String attribute :home_asciicast_id, String attribute :secret_key_base, String attribute :session_encryption_salt, String, default: 'encrypted cookie' attribute :session_signing_salt, String, default: 'signed encrypted cookie' attribute :admin_ids, Array[Integer] def home_asciicast if home_asciicast_id Asciicast.find_by_id_or_secret_token!(home_asciicast_id) else Asciicast.non_private.order(:id).first end end def ssl? url_scheme == 'https' end end end cfg_file = File.expand_path(File.dirname(__FILE__) + '/asciinema.yml') cfg = YAML.load_file(cfg_file) || {} rescue {} env = Hash[ENV.to_h.map { |k, v| [k.downcase, v] }] cfg.merge!(env) ::CFG = Asciinema::Configuration.new(cfg)