Sha256: 4c0c54bfd8cc6077445d4e669de4374ad5e7993ac33159505ff7c4e4ce25384e

Contents?: true

Size: 1.38 KB

Versions: 14

Compression:

Stored size: 1.38 KB

Contents

module Padrino
  class Mounter
    module ApplicationExtension
      attr_accessor :uri_root, :mounter_options
      attr_writer :public_folder

      def dependencies
        @__dependencies ||= Dir.glob("#{root}/**/*.rb").delete_if { |path| path == app_file }
      end

      def prerequisites
        @__prerequisites ||= []
      end

      def app_file
        @__app_file ||= trace_method(:app_file) { mounter_options[:app_file] }
      end

      def root
        @__root ||= trace_method(:root) { File.expand_path("#{app_file}/../") }
      end

      def public_folder
        @public_folder ||= trace_method(:public_folder) { "" }
      end

      def app_name
        @__app_name ||= mounter_options[:app_name] || self.to_s.underscore.to_sym
      end

      def setup_application!
        @configured ||= trace_method(:setup_application!) do
          $LOAD_PATH.concat(prerequisites)
          require_dependencies if root.start_with?(Padrino.root)
          true
        end
      end

      private

      def require_dependencies
        Padrino.require_dependencies(dependencies, :force => true)
      end

      def trace_method(method_name)
        value = baseclass.send(method_name) if baseclass != self && baseclass.respond_to?(method_name)
        value || yield
      end

      def baseclass
        @__baseclass ||= respond_to?(:superclass) ? superclass : self
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
padrino-core-0.12.9 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.3.4 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.14.0.rc2 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.14.0.rc1 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.3.3 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.3.2 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.3.1 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.3 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.2 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.1 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.1.beta1 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.0 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.0.beta3 lib/padrino-core/mounter/application_extension.rb
padrino-core-0.13.0.beta2 lib/padrino-core/mounter/application_extension.rb