Changeset 183
- Timestamp:
- 11/03/06 14:52:11 (2 years ago)
- Files:
-
- branches/mental/radiant/lib/generators/extension/extension_generator.rb (modified) (1 diff)
- branches/mental/radiant/lib/radiant/extension.rb (modified) (3 diffs)
- branches/mental/radiant/lib/radiant/extension_loader.rb (modified) (3 diffs)
- branches/mental/radiant/lib/radiant/initializer.rb (modified) (5 diffs)
- branches/mental/radiant/test/functional/extension_initialization_test.rb (modified) (1 diff)
- branches/mental/radiant/test/helpers/extension_test_helper.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/mental/radiant/lib/generators/extension/extension_generator.rb
r174 r183 11 11 record do |m| 12 12 m.directory "#{extension_path}/app/controllers" 13 m.directory "#{extension_path}/app/helpers" 13 14 m.directory "#{extension_path}/app/models" 14 15 m.directory "#{extension_path}/app/views" branches/mental/radiant/lib/radiant/extension.rb
r181 r183 33 33 34 34 class << self 35 attr_accessor :route_definitions 36 35 37 36 def activate_extension 38 37 return if instance.active? … … 51 50 52 51 def define_routes(&block) 53 @route_definitions ||= [] 54 @route_definitions << block 52 route_definitions << block 55 53 end 56 54 … … 68 66 Radiant::ExtensionMeta.find_or_create_by_name(extension_name) 69 67 end 68 69 def route_definitions 70 @route_definitions ||= [] 71 end 72 70 73 end 71 74 end branches/mental/radiant/lib/radiant/extension_loader.rb
r181 r183 3 3 module Radiant 4 4 class ExtensionLoader 5 include Simpleton6 5 7 6 class DependenciesObserver < MethodObserver 7 attr_accessor :config 8 9 def initialize(rails_config) 10 @config = rails_config 11 end 12 8 13 def before_clear(*args) 9 ExtensionLoader.instance.deactivate_extensions 14 ExtensionLoader.instance.deactivate_extensions unless config.cache_extensions 10 15 end 16 11 17 def after_clear(*args) 12 ExtensionLoader.instance.load_extensions 18 ExtensionLoader.instance.load_extensions unless config.cache_extensions 13 19 end 14 20 end 15 21 22 include Simpleton 23 24 attr_accessor :config 25 16 26 def initialize 17 27 @extension_roots = [] 18 DependenciesObserver.new.observe(Dependencies) 28 end 29 30 def install_dependencies_observer 31 DependenciesObserver.new(config).observe(Dependencies) 19 32 end 20 33 … … 23 36 end 24 37 25 def discover_extensions (config)38 def discover_extensions 26 39 config.extension_paths.map do |path| 27 Dir.glob("#{path}/*").s elect { |f| File.directory?(f) }.map do |ext_path|28 load_paths = %w(lib app/models app/controllers ).map { |p| "#{ext_path}/#{p}" }.sort40 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}" } 29 42 load_paths << ext_path 30 43 load_paths.each { |p| config.load_paths << p } … … 41 54 extension = extension_file.camelize.constantize 42 55 extension.root = root 43 extension.unloadable 56 extension.unloadable unless config.cache_extensions 44 57 activate(extension) 45 58 end branches/mental/radiant/lib/radiant/initializer.rb
r179 r183 6 6 attr_accessor :view_paths 7 7 attr_accessor :extension_paths 8 attr_accessor :cache_extensions 8 9 9 10 def initialize … … 11 12 self.extension_paths = default_extension_paths 12 13 super 14 self.cache_extensions ||= default_cache_extensions 13 15 end 14 16 … … 21 23 end 22 24 25 def default_cache_extensions 26 cache_classes 27 end 28 23 29 def admin 24 30 AdminUI.instance … … 26 32 27 33 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 29 40 end 30 41 … … 45 56 require 'radiant/extension_loader' 46 57 loader = configuration.extension_loader 47 loader.discover_extensions (configuration)58 loader.discover_extensions 48 59 set_autoload_paths 49 60 initialize_routing branches/mental/radiant/test/functional/extension_initialization_test.rb
r180 r183 28 28 assert_view_paths 29 29 30 Dependencies.clear 30 Dependencies.clear # ActionController cached no index action 31 31 BasicExtension.version = "should get changed back on clear" 32 32 BasicExtensionController.module_eval do branches/mental/radiant/test/helpers/extension_test_helper.rb
r173 r183 4 4 @initializer = Radiant::Initializer.run do |config| 5 5 @config = config 6 @config.extension_paths = [@ext_root_dir] 6 @config.cache_classes = false 7 @config.extension_paths << [@ext_root_dir] 7 8 end 8 9 end
