Sha256: 2cee3ee1d86fa0c8af93d3a88f69af94ec65c93e912c13fad24d1444841e300e

Contents?: true

Size: 1.38 KB

Versions: 3

Compression:

Stored size: 1.38 KB

Contents

require 'net/ftp'
require 'net/ssh'

require 'active_support/configurable'

module XFTP
  # Provides a way to store and retrive configuration options
  class Configuration
    include ActiveSupport::Configurable

    class << self
      # HACK: This is required to smooth a future transition to activesupport 4.x
      # Since 3-2's config_accessor doesn't take a block or provide an option to set the default value of a config.
      alias_method :old_config_accessor, :config_accessor

      def config_accessor(*names)
        old_config_accessor(*names)
        return unless block_given?

        names.each do |name|
          send("#{name}=", yield)
        end
      end
    end

    config_accessor :logging do
      default_logger = lambda do
        logger = Logger.new(STDERR)
        logger.level = Logger::ERROR
      end

      rails_logger = -> { Rails.logger || default_logger.call }
      logger = defined?(Rails) ? rails_logger.call : default_logger.call

      {
        logger: logger,
        verbose: false,
        colorize: true
      }
    end

    config_accessor :ftp do
      {
        binary: true,
        passive: true,
        debug_mode: false,
        open_timeout: nil,
        resume: false
      }
    end

    config_accessor :ssh do
      {
        keepalive: true,
        keepalive_interval: 30,
        forward_agent: true,
        verbose: :error
      }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xftp-0.2.1.pre.alpha lib/configuration.rb
xftp-0.2.0.pre.alpha lib/configuration.rb
xftp-0.1.0.pre.alpha lib/configuration.rb