Changeset 183

Show
Ignore:
Timestamp:
11/03/06 14:52:11 (2 years ago)
Author:
aiwilliams
Message:

mental branch: helpers in extensions, improved extension reloading

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/mental/radiant/lib/generators/extension/extension_generator.rb

    r174 r183  
    1111    record do |m| 
    1212      m.directory "#{extension_path}/app/controllers" 
     13      m.directory "#{extension_path}/app/helpers" 
    1314      m.directory "#{extension_path}/app/models" 
    1415      m.directory "#{extension_path}/app/views" 
  • branches/mental/radiant/lib/radiant/extension.rb

    r181 r183  
    3333     
    3434    class << self 
    35       attr_accessor :route_definitions 
    36      
     35 
    3736      def activate_extension 
    3837        return if instance.active? 
     
    5150       
    5251      def define_routes(&block) 
    53         @route_definitions ||= [] 
    54         @route_definitions << block 
     52        route_definitions << block 
    5553      end 
    5654     
     
    6866        Radiant::ExtensionMeta.find_or_create_by_name(extension_name) 
    6967      end 
     68       
     69      def route_definitions 
     70        @route_definitions ||= [] 
     71      end 
     72       
    7073    end 
    7174  end 
  • branches/mental/radiant/lib/radiant/extension_loader.rb

    r181 r183  
    33module Radiant 
    44  class ExtensionLoader 
    5     include Simpleton 
    65     
    76    class DependenciesObserver < MethodObserver 
     7      attr_accessor :config 
     8       
     9      def initialize(rails_config) 
     10        @config = rails_config 
     11      end 
     12       
    813      def before_clear(*args) 
    9         ExtensionLoader.instance.deactivate_extensions 
     14        ExtensionLoader.instance.deactivate_extensions unless config.cache_extensions 
    1015      end 
     16       
    1117      def after_clear(*args) 
    12         ExtensionLoader.instance.load_extensions 
     18        ExtensionLoader.instance.load_extensions unless config.cache_extensions 
    1319      end 
    1420    end 
    1521     
     22    include Simpleton 
     23     
     24    attr_accessor :config 
     25     
    1626    def initialize 
    1727      @extension_roots = [] 
    18       DependenciesObserver.new.observe(Dependencies) 
     28    end 
     29 
     30    def install_dependencies_observer 
     31      DependenciesObserver.new(config).observe(Dependencies) 
    1932    end 
    2033 
     
    2336    end 
    2437 
    25     def discover_extensions(config) 
     38    def discover_extensions 
    2639      config.extension_paths.map do |path| 
    27         Dir.glob("#{path}/*").select { |f| File.directory?(f) }.map do |ext_path| 
    28           load_paths = %w(lib app/models app/controllers).map { |p| "#{ext_path}/#{p}" }.sort 
     40        Dir.glob("#{path}/*").sort.select { |f| File.directory?(f) }.map do |ext_path| 
     41          load_paths = %w(lib app/models app/controllers app/helpers).map { |p| "#{ext_path}/#{p}" } 
    2942          load_paths << ext_path 
    3043          load_paths.each { |p| config.load_paths << p } 
     
    4154        extension = extension_file.camelize.constantize 
    4255        extension.root = root 
    43         extension.unloadable 
     56        extension.unloadable unless config.cache_extensions 
    4457        activate(extension) 
    4558      end 
  • branches/mental/radiant/lib/radiant/initializer.rb

    r179 r183  
    66    attr_accessor :view_paths 
    77    attr_accessor :extension_paths 
     8    attr_accessor :cache_extensions 
    89     
    910    def initialize 
     
    1112      self.extension_paths = default_extension_paths 
    1213      super 
     14      self.cache_extensions ||= default_cache_extensions 
    1315    end 
    1416     
     
    2123    end 
    2224     
     25    def default_cache_extensions 
     26      cache_classes 
     27    end 
     28     
    2329    def admin 
    2430      AdminUI.instance 
     
    2632     
    2733    def extension_loader 
    28       ExtensionLoader.instance 
     34      @extension_loader ||= begin 
     35        loader = ExtensionLoader.instance 
     36        loader.config = self 
     37        loader.install_dependencies_observer 
     38        loader 
     39      end 
    2940    end 
    3041     
     
    4556      require 'radiant/extension_loader' 
    4657      loader = configuration.extension_loader 
    47       loader.discover_extensions(configuration) 
     58      loader.discover_extensions 
    4859      set_autoload_paths 
    4960      initialize_routing 
  • branches/mental/radiant/test/functional/extension_initialization_test.rb

    r180 r183  
    2828    assert_view_paths 
    2929     
    30     Dependencies.clear 
     30    Dependencies.clear # ActionController cached no index action 
    3131    BasicExtension.version = "should get changed back on clear" 
    3232    BasicExtensionController.module_eval do 
  • branches/mental/radiant/test/helpers/extension_test_helper.rb

    r173 r183  
    44    @initializer = Radiant::Initializer.run do |config| 
    55      @config = config 
    6       @config.extension_paths = [@ext_root_dir] 
     6      @config.cache_classes = false 
     7      @config.extension_paths << [@ext_root_dir] 
    78    end 
    89  end