mack 0.7.1.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. data/CHANGELOG +32 -0
  2. data/bin/gem_load_path.rb +1 -1
  3. data/bin/mackery +0 -1
  4. data/bin/mackery-server +5 -1
  5. data/lib/mack/assets/asset_helpers.rb +51 -0
  6. data/lib/mack/assets/assets_mgr.rb +165 -0
  7. data/lib/mack/controller/controller.rb +4 -4
  8. data/lib/mack/controller/cookie_jar.rb +1 -1
  9. data/lib/mack/controller/request.rb +13 -3
  10. data/lib/mack/controller/response.rb +12 -0
  11. data/lib/mack/core_extensions/kernel.rb +69 -0
  12. data/lib/mack/core_extensions/symbol.rb +4 -0
  13. data/lib/mack/errors/errors.rb +5 -1
  14. data/lib/mack/generators/controller_generator/manifest.yml +2 -2
  15. data/lib/mack/generators/controller_helper_generator/manifest.yml +2 -2
  16. data/lib/mack/generators/mack_application_generator/manifest.yml +10 -2
  17. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/default.yml.template → configatron/default.rb.template} +10 -15
  18. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/development.yml.template → configatron/development.rb.template} +1 -1
  19. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/production.yml.template → configatron/production.rb.template} +0 -0
  20. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/test.yml.template → configatron/test.rb.template} +1 -1
  21. data/lib/mack/generators/mack_application_generator/templates/public/404.html.template +15 -0
  22. data/lib/mack/generators/mack_application_generator/templates/public/500.html.template +15 -0
  23. data/lib/mack/generators/view_helper_generator/manifest.yml +2 -2
  24. data/lib/mack/initialization/application.rb +9 -5
  25. data/lib/mack/initialization/boot_loader.rb +2 -104
  26. data/lib/mack/initialization/configuration.rb +72 -69
  27. data/lib/mack/initialization/console.rb +1 -1
  28. data/lib/mack/initialization/helpers.rb +1 -6
  29. data/lib/mack/initialization/logging/basic_layout.rb +14 -0
  30. data/lib/mack/initialization/logging/color_layout.rb +23 -0
  31. data/lib/mack/initialization/logging/filter.rb +45 -0
  32. data/lib/mack/initialization/logging.rb +33 -89
  33. data/lib/mack/initialization/plugins.rb +1 -1
  34. data/lib/mack/rendering/engine/builder.rb +3 -0
  35. data/lib/mack/rendering/engine/erubis.rb +28 -16
  36. data/lib/mack/rendering/type/file_base.rb +1 -1
  37. data/lib/mack/rendering/type/url.rb +3 -3
  38. data/lib/mack/rendering/view_template.rb +4 -7
  39. data/lib/mack/routing/resource_proxy.rb +33 -0
  40. data/lib/mack/routing/route_map.rb +122 -288
  41. data/lib/mack/routing/route_object.rb +88 -0
  42. data/lib/mack/routing/routes.rb +169 -0
  43. data/lib/mack/routing/urls.rb +39 -5
  44. data/lib/mack/runner.rb +65 -32
  45. data/lib/mack/runner_helpers/request_logger.rb +3 -3
  46. data/lib/mack/runner_helpers/session.rb +4 -4
  47. data/lib/mack/sessions/cookie_session_store.rb +3 -3
  48. data/lib/mack/sessions/session.rb +1 -1
  49. data/lib/mack/sessions/session_store_base.rb +1 -1
  50. data/lib/mack/tasks/gem_tasks.rake +156 -1
  51. data/lib/mack/tasks/mack_dump_tasks.rake +1 -1
  52. data/lib/mack/tasks/mack_update_tasks.rake +85 -1
  53. data/lib/mack/tasks/rake_rules.rake +6 -0
  54. data/lib/mack/tasks/test_tasks.rake +4 -4
  55. data/lib/mack/testing/helpers.rb +13 -6
  56. data/lib/mack/testing/rspec.rb +27 -9
  57. data/lib/mack/testing/test_case.rb +1 -1
  58. data/lib/mack/utils/ansi/ansi_color.rb +4 -1
  59. data/lib/mack/utils/forgery_detector.rb +3 -3
  60. data/lib/mack/utils/http_status_codes.rb +19 -0
  61. data/lib/mack/utils/http_status_codes.yml +55 -0
  62. data/lib/mack/utils/paths.rb +32 -32
  63. data/lib/mack/utils/reloader.rb +60 -0
  64. data/lib/mack/utils/server.rb +3 -3
  65. data/lib/mack/version.rb +1 -1
  66. data/lib/mack/view_helpers/all_helpers.rb +7 -0
  67. data/lib/mack/view_helpers/date_time_helpers.rb +16 -10
  68. data/lib/mack/view_helpers/form_helpers.rb +1 -1
  69. data/lib/mack/view_helpers/html_helpers.rb +22 -1
  70. data/lib/mack/view_helpers/link_helpers.rb +51 -10
  71. data/lib/mack/view_helpers/string_helpers.rb +1 -1
  72. data/lib/mack.rb +0 -1
  73. data/lib/mack_core.rb +8 -8
  74. data/lib/mack_tasks.rb +1 -1
  75. metadata +27 -15
  76. data/lib/mack/view_helpers/asset_helpers.rb +0 -50
@@ -1,5 +1,5 @@
1
1
  boot_load(:initializers) do
2
- Mack.logger.debug "Initializing custom initializers..." unless app_config.log.disable_initialization_logging
2
+ Mack.logger.debug "Initializing custom initializers..." unless configatron.mack.log.disable_initialization_logging
3
3
  Dir.glob(Mack::Paths.initializers("**/*.rb")) do |d|
4
4
  require d
5
5
  end
@@ -7,7 +7,7 @@ end
7
7
 
8
8
  boot_load(:lib, :plugins, :gems) do
9
9
  # require 'lib' files:
10
- Mack.logger.debug "Initializing lib classes..." unless app_config.log.disable_initialization_logging
10
+ Mack.logger.debug "Initializing lib classes..." unless configatron.mack.log.disable_initialization_logging
11
11
  Dir.glob(Mack::Paths.lib("**/*.rb")).each do |d|
12
12
  require d
13
13
  end
@@ -21,15 +21,14 @@ end
21
21
 
22
22
  boot_load(:routes) do
23
23
  # set up routes:
24
- Mack.logger.debug "Initializing routes..." unless app_config.log.disable_initialization_logging
24
+ Mack.logger.debug "Initializing routes..." unless configatron.mack.log.disable_initialization_logging
25
25
  require Mack::Paths.config("routes")
26
26
  end
27
27
 
28
28
  boot_load(:app_files, :default_controller) do
29
29
  # require 'app' files:
30
- Mack.logger.debug "Initializing 'app' classes..." unless app_config.log.disable_initialization_logging
30
+ Mack.logger.debug "Initializing 'app' classes..." unless configatron.mack.log.disable_initialization_logging
31
31
  Dir.glob(Mack::Paths.app("**/*.rb")).each do |d|
32
- # puts "d: #{d}"
33
32
  begin
34
33
  require d
35
34
  rescue NameError => e
@@ -46,4 +45,9 @@ boot_load(:app_files, :default_controller) do
46
45
  end
47
46
  end
48
47
  end
48
+
49
+ # Add default assets
50
+ assets_mgr.defaults do |a|
51
+ a.add_css "scaffold" if File.exists?Mack::Paths.stylesheets("scaffold.css")
52
+ end
49
53
  end
@@ -26,8 +26,7 @@ module Mack
26
26
  begin
27
27
  Mack::BootLoader.instance.sequences[a.to_sym].run
28
28
  rescue Exception => e
29
- puts "[#{a}]: #{e.message}"
30
- puts e.backtrace
29
+ raise e
31
30
  end
32
31
  end
33
32
  end
@@ -70,105 +69,4 @@ module Mack
70
69
 
71
70
  end
72
71
  end
73
- end
74
-
75
- # module Mack
76
- # class BootLoader
77
- # include Singleton
78
- # include Extlib::Hook
79
- #
80
- # attr_accessor :steps
81
- # attr_accessor :additional_procs
82
- #
83
- # def initialize
84
- # self.steps = [:initializers, :gems, :plugins, :libs, :default_controller, :routes, :app, :additional]
85
- # self.additional_procs = []
86
- # end
87
- #
88
- # def start
89
- # Mack.logger.debug "Starting boot loader sequence...."
90
- # end
91
- #
92
- # def initializers
93
- # # set up initializers:
94
- # Mack.logger.debug "Initializing custom initializers..." unless app_config.log.disable_initialization_logging
95
- # Dir.glob(Mack::Paths.initializers("**/*.rb")) do |d|
96
- # require d
97
- # end
98
- # end
99
- #
100
- # def gems
101
- # Mack.logger.debug "Initializing custom gems..." unless app_config.log.disable_initialization_logging
102
- # Mack::Utils::GemManager.instance.do_requires
103
- # end
104
- #
105
- # def plugins
106
- # # require 'plugins':
107
- # Mack.logger.debug "Initializing plugins..." unless app_config.log.disable_initialization_logging
108
- # require File.join(File.dirname(__FILE__), "plugins.rb")
109
- # end
110
- #
111
- # def libs
112
- # # require 'lib' files:
113
- # Mack.logger.debug "Initializing lib classes..." unless app_config.log.disable_initialization_logging
114
- # Dir.glob(Mack::Paths.lib("**/*.rb")).each do |d|
115
- # require d
116
- # end
117
- # end
118
- #
119
- # def default_controller
120
- # # make sure that default_controller is available to other controllers
121
- # path = Mack::Paths.controllers("default_controller.rb")
122
- # require path if File.exists?(path)
123
- # end
124
- #
125
- # def routes
126
- # # set up routes:
127
- # Mack.logger.debug "Initializing routes..." unless app_config.log.disable_initialization_logging
128
- # require Mack::Paths.config("routes")
129
- # end
130
- #
131
- # def app
132
- # # require 'app' files:
133
- # Mack.logger.debug "Initializing 'app' classes..." unless app_config.log.disable_initialization_logging
134
- # Dir.glob(Mack::Paths.app("**/*.rb")).each do |d|
135
- # # puts "d: #{d}"
136
- # begin
137
- # require d
138
- # rescue NameError => e
139
- # if e.message.match("uninitialized constant")
140
- # mod = e.message.gsub("uninitialized constant ", "")
141
- # x =%{
142
- # module ::#{mod}
143
- # end
144
- # }
145
- # eval(x)
146
- # require d
147
- # else
148
- # raise e
149
- # end
150
- # end
151
- # end
152
- # end
153
- #
154
- # def additional
155
- # self.additional_procs.each do |p|
156
- # puts "p: #{p.inspect}"
157
- # p.call
158
- # end
159
- # end
160
- #
161
- # def finish
162
- # Mack.logger.debug "...Finished boot loader sequence."
163
- # end
164
- #
165
- # def self.run
166
- # Mack::BootLoader.instance.start
167
- # Mack::BootLoader.instance.steps.each do |step|
168
- # Mack::BootLoader.instance.send(step)
169
- # end
170
- # Mack::BootLoader.instance.finish
171
- # end
172
- #
173
- # end
174
- # end
72
+ end
@@ -1,6 +1,7 @@
1
1
  require 'mack-facets'
2
- require 'application_configuration'
2
+ require 'configatron'
3
3
  require File.join(File.dirname(__FILE__), 'boot_loader')
4
+ require File.join(File.dirname(__FILE__), '..', 'core_extensions', 'kernel')
4
5
  require File.join(File.dirname(__FILE__), '..', 'utils', 'paths')
5
6
  boot_load(:configuration) do
6
7
  module Mack
@@ -14,83 +15,85 @@ boot_load(:configuration) do
14
15
  def self.env
15
16
  ENV["MACK_ENV"] ||= "development"
16
17
  end
18
+
19
+ # Returns true/false based on whether the specified environment
20
+ # is the current environment
21
+ def self.env?(env)
22
+ self.env == env.to_s
23
+ end
17
24
 
18
25
  # All configuration for the Mack subsystem happens here. Each of the default environments,
19
26
  # production, development, and test have their own default configuration options. These
20
27
  # get merged with overall default options.
21
28
  module Configuration # :nodoc:
29
+ unless const_defined?("LOADED")
30
+ configatron.mack.render_url_timeout = 5
31
+ configatron.mack.cache_classes = true
32
+ configatron.mack.reload_classes = 1
33
+ configatron.mack.deep_class_reload = false
34
+ configatron.mack.use_lint = true
35
+ configatron.mack.show_exceptions = true
36
+ configatron.mack.use_sessions = true
37
+ configatron.mack.session_id = '_mack_session_id'
38
+ configatron.mack.cookie_values = {:path => '/'}
39
+ configatron.mack.site_domain = 'http://localhost:3000'
40
+ configatron.mack.testing_framework = :rspec
41
+ configatron.mack.rspec_file_pattern = 'test/**/*_spec.rb'
42
+ configatron.mack.test_case_file_pattern = 'test/**/*_test.rb'
43
+ configatron.mack.session_store = :cookie
44
+ configatron.mack.disable_forgery_detector = false
45
+ configatron.mack.assets.max_distribution = 4
46
+ configatron.mack.assets.hosts = ''
47
+ configatron.mack.assets.stamp = Time.now.to_i
48
+ configatron.mack.cookie_session_store.expiry_time = 4.hours
49
+
50
+ configatron.mack.log.level = :info
51
+ configatron.mack.log.detailed_requests = true
52
+ configatron.mack.log.disable_initialization_logging = false
53
+ configatron.mack.log.root = Mack::Paths.log
54
+ configatron.mack.log.colors.db = :cyan
55
+ configatron.mack.log.colors.error = :red
56
+ configatron.mack.log.colors.fatal = :red
57
+ configatron.mack.log.colors.warn = :yellow
58
+ configatron.mack.log.colors.completed = :purple
59
+ configatron.mack.log.use_colors = true
60
+ configatron.mack.log.time_format = '%Y-%m-%d %H:%M:%S'
61
+
62
+ if Mack.env?(:production)
63
+ configatron.mack.use_lint = false
64
+ configatron.mack.show_exceptions = false
65
+ configatron.mack.log.level = :info
66
+ configatron.mack.log.detailed_requests = true
67
+ configatron.mack.log.use_colors = false
68
+ end
69
+
70
+ if Mack.env?(:development)
71
+ configatron.mack.cache_classes = false
72
+ configatron.mack.log.level = :debug
73
+ end
22
74
 
23
- class << self
24
- attr_accessor :initialized_core
25
- attr_accessor :initialized_application
26
- end
75
+ if Mack.env?(:test)
76
+ configatron.mack.cookie_values = {}
77
+ configatron.mack.session_store = :test
78
+ configatron.mack.disable_forgery_detector = true
79
+ configatron.mack.run_remote_tests = true
80
+ configatron.mack.log.level = :error
81
+ end
27
82
 
28
- # use local memory and store stuff for 24 hours:
29
- # use file for sessions and store them for 4 hours:
30
- DEFAULTS_PRODUCTION = {
31
- "mack::use_lint" => false,
32
- "mack::show_exceptions" => false,
33
- "log_level" => "info",
34
- "log::detailed_requests" => false
35
- } unless self.const_defined?("DEFAULTS_PRODUCTION")
36
-
37
- # use local memory and store stuff for 5 minutes:
38
- DEFAULTS_DEVELOPMENT = {
39
- "mack::cache_classes" => false,
40
- "log_level" => "debug"
41
- } unless self.const_defined?("DEFAULTS_DEVELOPMENT")
42
-
43
- # use local memory and store stuff for 1 hour:
44
- DEFAULTS_TEST = {
45
- "log_level" => "error",
46
- "run_remote_tests" => true,
47
- "mack::cookie_values" => {},
48
- "mack::session_store" => "test",
49
- "mack::disable_forgery_detector" => true
50
- } unless self.const_defined?("DEFAULTS_TEST")
51
-
52
- unless self.const_defined?("DEFAULTS")
53
- DEFAULTS = {
54
- "mack::render_url_timeout" => 5,
55
- "mack::cache_classes" => true,
56
- "mack::use_lint" => true,
57
- "mack::show_exceptions" => true,
58
- "mack::use_sessions" => true,
59
- "mack::session_id" => "_mack_session_id",
60
- "mack::cookie_values" => {
61
- "path" => "/"
62
- },
63
- "mack::site_domain" => "http://localhost:3000",
64
- "mack::testing_framework" => "rspec",
65
- "mack::rspec_file_pattern" => "test/**/*_spec.rb",
66
- "mack::test_case_file_pattern" => "test/**/*_test.rb",
67
- "log::detailed_requests" => true,
68
- "log::db_color" => "cyan",
69
- "log::error_color" => "red",
70
- "log::fatal_color" => "red",
71
- "log::warn_color" => "yellow",
72
- "log::completed_color" => "purple",
73
- "log_level" => "info",
74
- "mack::session_store" => "cookie",
75
- "cookie_session_store::expiry_time" => 4.hours
76
- }#.merge(eval("DEFAULTS_#{Mack.env.upcase}"))
77
- end
78
-
79
- app_config.load_hash(DEFAULTS, "mack_defaults")
80
- app_config.load_hash(eval("DEFAULTS_#{Mack.env.upcase}"), "mack_defaults_#{Mack.env}")
81
- app_config.load_file(Mack::Paths.app_config("default.yml"))
82
- app_config.load_file(Mack::Paths.app_config("#{Mack.env}.yml"))
83
- # app_config.reload
83
+ if File.exists?(Mack::Paths.configatron('default.rb'))
84
+ require Mack::Paths.configatron('default.rb')
85
+ end
86
+
87
+ if File.exists?(Mack::Paths.configatron("#{Mack.env}.rb"))
88
+ require Mack::Paths.configatron("#{Mack.env}.rb")
89
+ end
84
90
 
85
- def self.dump
86
- fcs = app_config.instance.instance_variable_get("@final_configuration_settings")
87
- conf = {}
88
- fcs.each_pair do |k, v|
89
- unless v.is_a?(Application::Configuration::Namespace)
90
- conf[k.to_s] = v unless k.to_s.match("__")
91
- end
91
+ def self.dump
92
+ configatron.inspect
92
93
  end
93
- conf
94
+
95
+ LOADED = true
96
+
94
97
  end
95
98
 
96
99
  end
@@ -21,7 +21,7 @@ self.send(:include, Mack::Routes::Urls)
21
21
  # without having to exit the console and start again.
22
22
  def reload!
23
23
  ivar_cache("_rack_reloader") do
24
- Rack::Reloader.new(nil, 1)
24
+ Mack::Reloader.new(nil)
25
25
  end.reload!
26
26
  end
27
27
 
@@ -1,11 +1,6 @@
1
1
  boot_load(:helpers, :logging) do
2
2
  # Include ApplicationHelper into all controllers:
3
- Mack.logger.debug "Initializing helpers..." unless app_config.log.disable_initialization_logging
4
- # adding application_helper module into all defined controllers
5
- if Object.const_defined?("ApplicationHelper")
6
- deprecate_method("ApplicationHelper", "Mack::ViewHelpers::ApplicationHelper", "0.7.0")
7
- ApplicationHelper.include_safely_into(Mack::Rendering::ViewTemplate)
8
- end
3
+ Mack.logger.debug "Initializing helpers..." unless configatron.mack.log.disable_initialization_logging
9
4
 
10
5
  module Mack
11
6
  module ControllerHelpers # :nodoc:
@@ -0,0 +1,14 @@
1
+ module Mack
2
+ module Logging # :nodoc:
3
+
4
+ class BasicLayout < ::Logging::Layout # :nodoc:
5
+
6
+ def format(event)
7
+ obj = format_obj(event.data)
8
+ sprintf("%*s:\t[%s]\t%s\n", ::Logging::MAX_LEVEL_LENGTH, ::Logging::LNAMES[event.level], Time.now.strftime(configatron.mack.log.time_format), obj)
9
+ end
10
+
11
+ end # BasicLayout
12
+
13
+ end # Logging
14
+ end # Mack
@@ -0,0 +1,23 @@
1
+ module Mack
2
+ module Logging # :nodoc:
3
+
4
+ class ColorLayout < Mack::Logging::BasicLayout # :nodoc:
5
+
6
+ def format(event)
7
+ message = super(event)
8
+ if message.match(/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP)/)
9
+ return Mack::Utils::Ansi::Color.wrap(configatron.mack.log.colors.db, message)
10
+ else
11
+ color = configatron.mack.log.colors.retrieve(event.level_name.downcase.to_sym, nil)
12
+ if color
13
+ return Mack::Utils::Ansi::Color.wrap(color, message)
14
+ else
15
+ return message
16
+ end
17
+ end
18
+ end
19
+
20
+ end # ColorLayout
21
+
22
+ end # Logging
23
+ end # Mack
@@ -0,0 +1,45 @@
1
+ module Mack
2
+ module Logging # :nodoc:
3
+
4
+ # Used to house a list of filters for parameter logging. The initial list
5
+ # includes password and password_confirmation
6
+ class Filter
7
+ include Singleton
8
+
9
+ # The list of parameters you want filtered for logging.
10
+ attr_reader :list
11
+
12
+ def initialize
13
+ @list = [:password, :password_confirmation]
14
+ end
15
+
16
+ # Adds 'n' number of parameter names to the list
17
+ def add(*args)
18
+ @list << args
19
+ @list.flatten!
20
+ end
21
+
22
+ # Removes 'n' number of parameter names from the list
23
+ def remove(*args)
24
+ @list.delete_values(*args)
25
+ end
26
+
27
+ class << self
28
+
29
+ def remove(*args)
30
+ Mack::Logging::Filter.instance.remove(*args)
31
+ end
32
+
33
+ def add(*args)
34
+ Mack::Logging::Filter.instance.add(*args)
35
+ end
36
+
37
+ def list
38
+ Mack::Logging::Filter.instance.list
39
+ end
40
+
41
+ end
42
+
43
+ end # Filter
44
+ end # Logging
45
+ end # Mack
@@ -1,6 +1,30 @@
1
1
  boot_load(:logging, :configuration) do
2
- require 'log4r'
2
+
3
+ require 'logging'
3
4
  require File.join(File.dirname(__FILE__), "..", "utils", "ansi", "ansi_color")
5
+ require File.join(File.dirname(__FILE__), 'logging', 'filter')
6
+ require File.join(File.dirname(__FILE__), 'logging', 'basic_layout')
7
+ require File.join(File.dirname(__FILE__), 'logging', 'color_layout')
8
+
9
+ module Logging # :nodoc:
10
+
11
+ def self.level_name_from_num(num)
12
+ h = ivar_cache do
13
+ Logging::LEVELS.invert
14
+ end
15
+ h[num]
16
+ end
17
+
18
+ class LogEvent # :nodoc:
19
+
20
+ def level_name
21
+ ::Logging.level_name_from_num(self.level)
22
+ end
23
+
24
+ end
25
+
26
+ end # Logging
27
+
4
28
  module Mack
5
29
 
6
30
  def self.logger
@@ -12,102 +36,22 @@ boot_load(:logging, :configuration) do
12
36
  end
13
37
 
14
38
  def self.reset_logger!
15
- log_directory = app_config.log_root || Mack::Paths.log
39
+ log_directory = configatron.mack.log.retrieve(:root, Mack::Paths.log)
16
40
  begin
17
41
  FileUtils.mkdir_p(log_directory)
18
42
  rescue Exception => e
19
43
  end
20
-
21
- Mack.logger = Log4r::Logger.new('')
22
- Mack.logger.level = Module.instance_eval("Log4r::#{(app_config.log_level || :info).to_s.upcase}")
23
-
24
- format = Log4r::PatternFormatter.new(:pattern => "%l:\t[%d]\t%M")
25
-
26
- if Mack.env == "development"
27
- # console:
28
- Mack.logger.add(Log4r::StdoutOutputter.new('console', :formatter => format))
29
- end
30
-
31
- # file:
32
- Mack.logger.add(Log4r::FileOutputter.new('fileOutputter', :filename => File.join(log_directory, "#{Mack.env}.log"), :trunc => false, :formatter => format))
44
+
45
+ Mack.logger = ::Logging::RootLogger.new
46
+ Mack.logger.add_appenders(::Logging::Appenders::File.new(Mack.env, :filename => File.join(log_directory, "#{Mack.env}.log"), :layout => Mack::Logging::BasicLayout.new))
47
+ Mack.logger.add_appenders(::Logging::Appenders::Stdout.new(:layout => Mack::Logging::ColorLayout.new)) if Mack.env?(:development)
48
+ Mack.logger.level = configatron.mack.log.retrieve(:level, :info)
33
49
  end
34
50
 
35
- end
51
+ end # Mack
36
52
 
37
53
  unless Mack.logger
38
- module Log4r # :nodoc:
39
- class IOOutputter # :nodoc:
40
-
41
- # let's not do this more than once. :)
42
- unless Log4r::IOOutputter.private_instance_methods.include?("old_write")
43
-
44
- alias_method :old_write, :write
45
-
46
- def write(data)
47
- case data
48
- when /^(DEBUG:|INFO:|WARN:|ERROR:|FATAL:)\s\[.*\]\s(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP)/
49
- old_write(Mack::Utils::Ansi::Color.wrap(app_config.log.db_color, data))
50
- else
51
- level = data.match(/^\w+/).to_s
52
- color = app_config.log.send("#{level.downcase}_color")
53
- if color
54
- old_write(Mack::Utils::Ansi::Color.wrap(color, data))
55
- else
56
- old_write(data)
57
- end
58
- end
59
- end
60
-
61
- end
62
-
63
- end # IOOutputter
64
- end # Log4r
65
-
66
54
  Mack.reset_logger!
67
55
  end
68
56
 
69
- module Mack
70
- module Logging # :nodoc:
71
- # Used to house a list of filters for parameter logging. The initial list
72
- # includes password and password_confirmation
73
- class Filter
74
- include Singleton
75
-
76
- # The list of parameters you want filtered for logging.
77
- attr_reader :list
78
-
79
- def initialize
80
- @list = [:password, :password_confirmation]
81
- end
82
-
83
- # Adds 'n' number of parameter names to the list
84
- def add(*args)
85
- @list << args
86
- @list.flatten!
87
- end
88
-
89
- # Removes 'n' number of parameter names from the list
90
- def remove(*args)
91
- @list.delete_values(*args)
92
- end
93
-
94
- class << self
95
-
96
- def remove(*args)
97
- Mack::Logging::Filter.instance.remove(*args)
98
- end
99
-
100
- def add(*args)
101
- Mack::Logging::Filter.instance.add(*args)
102
- end
103
-
104
- def list
105
- Mack::Logging::Filter.instance.list
106
- end
107
-
108
- end
109
-
110
- end
111
- end
112
- end
113
- end
57
+ end # boot_load
@@ -1,5 +1,5 @@
1
1
  boot_load(:plugins, :initializers) do
2
- Mack.logger.debug "Initializing plugins..." unless app_config.log.disable_initialization_logging
2
+ Mack.logger.debug "Initializing plugins..." unless configatron.mack.log.disable_initialization_logging
3
3
  plugins = [] # a list of all plugins
4
4
  Dir.glob(Mack::Paths.plugins("*")).each do |d|
5
5
  plugins << d
@@ -7,6 +7,9 @@ module Mack
7
7
  class Builder < Mack::Rendering::Engine::Base
8
8
 
9
9
  def render(io, binding)
10
+ if io.is_a?(File)
11
+ io = io.read
12
+ end
10
13
  @_xml = ::Builder::XmlMarkup.new(:target => @_xml_output, :indent => 1)
11
14
  view_template.instance_variable_set("@_xml", @_xml)
12
15
  eval(io, binding)
@@ -6,12 +6,35 @@ module Mack
6
6
  class Erubis < Mack::Rendering::Engine::Base
7
7
 
8
8
  def render(io, binding)
9
- src = Mack::Rendering::Engine::Erubis::TemplateCache.instance.cache[io]
10
- if src.nil?
11
- src = ::Erubis::Eruby.new(io).src
12
- Mack::Rendering::Engine::Erubis::TemplateCache.instance.cache[io] = src
9
+ io_src = io
10
+ file_name = nil
11
+ if io.is_a?(File)
12
+ io_src = io.read
13
+ file_name = io.path
14
+ end
15
+
16
+ eruby = nil
17
+
18
+ eruby = ::Erubis::Eruby.new(io_src)
19
+
20
+ eruby.filename = file_name
21
+ begin
22
+ eruby.result(binding)
23
+ rescue NoMethodError => e
24
+ if file_name
25
+ m = NoMethodError.new("undefined method `#{e.name}' for #{e.backtrace[0].match(/(^.+:\d)/).captures.first}")
26
+ m.set_backtrace(e.backtrace)
27
+ raise m
28
+ end
29
+ raise e
30
+ rescue NameError => e
31
+ if file_name
32
+ m = NameError.new("undefined local variable or method `#{e.name}' for #{e.backtrace[0].match(/(^.+:\d)/).captures.first}")
33
+ m.set_backtrace(e.backtrace)
34
+ raise m
35
+ end
36
+ raise e
13
37
  end
14
- eval(src, binding)
15
38
  end
16
39
 
17
40
  def extension
@@ -51,17 +74,6 @@ module Mack
51
74
  eval( "_buf", the_binding, __FILE__, __LINE__)
52
75
  end
53
76
 
54
- class TemplateCache # :nodoc:
55
- include Singleton
56
-
57
- attr_reader :cache
58
-
59
- def initialize
60
- @cache = {}
61
- end
62
-
63
- end
64
-
65
77
  end # Erubis
66
78
  end # Engines
67
79
  end # Rendering
@@ -13,7 +13,7 @@ module Mack
13
13
  Mack::Rendering::Engine::Registry.engines[type].each do |e|
14
14
  @engine = find_engine(e).new(self.view_template)
15
15
  find_file(file + ".#{@engine.extension}") do |f|
16
- return @engine.render(File.open(f).read, self.binder)
16
+ return @engine.render(File.new(f), self.binder)
17
17
  end
18
18
  end
19
19
  raise Mack::Errors::ResourceNotFound.new(file + ".*")