Sha256: 570073cfdca3250b8644b935b9b4b1b2028dbaa041fa1cf6e76916566504ad67

Contents?: true

Size: 1.01 KB

Versions: 15

Compression:

Stored size: 1.01 KB

Contents

module Xray

  def self.config
    @@config ||= Config.new
  end

  class Config
    attr_accessor :editor

    CONFIG_FILE = ".xrayconfig"
    DEFAULT_EDITOR = '/usr/local/bin/subl'

    def editor
      load_config[:editor]
    end

    def editor=(new_editor)
      if new_editor && new_editor != editor
        write_config(editor: new_editor)
        true
      else
        false
      end
    end

    def to_yaml
      {editor: editor}.to_yaml
    end

    def config_file
      if File.exists?("#{Dir.pwd}/#{CONFIG_FILE}")
        "#{Dir.pwd}/#{CONFIG_FILE}"
      else
        "#{Dir.home}/#{CONFIG_FILE}"
      end
    end

    private

    def write_config(new_config)
      config = load_config.merge(new_config)
      File.open(config_file, 'w') { |f| f.write(config.to_yaml) }
    end

    def load_config
      default_config.merge(local_config)
    end

    def local_config
      YAML.load_file(config_file)
    rescue
      {}
    end

    def default_config
      { editor: DEFAULT_EDITOR }
    end

  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
xray-rails-0.1.21 lib/xray/config.rb
xray-rails-0.1.20 lib/xray/config.rb
xray-rails-0.1.19 lib/xray/config.rb
xray-rails-0.1.18 lib/xray/config.rb
xray-rails-0.1.17 lib/xray/config.rb
xray-rails-0.1.16 lib/xray/config.rb
xray-rails-0.1.15 lib/xray/config.rb
xray-rails-0.1.14 lib/xray/config.rb
xray-rails-0.1.13 lib/xray/config.rb
xray-rails-0.1.12 lib/xray/config.rb
xray-rails-0.1.11 lib/xray/config.rb
xray-rails-0.1.10 lib/xray/config.rb
xray-rails-0.1.9 lib/xray/config.rb
xray-rails-0.1.8 lib/xray/config.rb
xray-rails-0.1.7 lib/xray/config.rb