Sha256: 58b9ca96a4b20576ac2bda66687683662120ba68bb89a0162562c2890307a0c7

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

require 'yaml'

class Jax::Application::Configuration < Jax::Engine::Configuration
  attr_accessor :view_paths
  attr_writer :plugin_repository_url
  
  def initialize(*)
    super
    @view_paths = ['app/views']
    read_config_files
  end
  
  def routes
    if !@routes
      @routes = Jax::Routes.new
      Jax::Routes.load!
    end
    @routes
  end
  
  def paths
    @paths ||= begin
      paths = super
      paths.tmp                 "tmp"
      paths.vendor              "vendor"
      paths.vendor.plugins      "vendor/plugins"
      paths
    end
  end
  
  def default_plugin_repository_url
    "http://plugins.jaxgl.com/"
  end
  
  def plugin_repository_url
    @plugin_repository_url ||=
      @config_file[:plugin_repository_url] ||
      ENV['JAX_PLUGIN_REPOSITORY_URL'] ||
      default_plugin_repository_url
      
    @plugin_repository_url.dup # so that it can't be edited in-place
  end
  
  private
  def read_config_files
    @config_file = {}.with_indifferent_access
    @config_file.merge! hash_from_config_file(File.expand_path("~/.jax", File.dirname(__FILE__)))
    @config_file.merge! hash_from_config_file(File.expand_path(".jax", root))
  end
  
  def hash_from_config_file(path)
    if File.file? path
      hash = YAML::load(File.read(path)) || {}
      raise "Error: #{hash.inspect} is not a hash (read from #{path})" unless hash.kind_of?(Hash)
      hash
    else
      {}
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jax-1.1.1 lib/jax/application/configuration.rb
jax-1.1.0 lib/jax/application/configuration.rb
jax-1.1.0.rc1 lib/jax/application/configuration.rb