public
Description: A Ruby web application framework
Homepage: http://www.mackframework.com
Clone URL: git://github.com/markbates/mack.git
Click here to lend your support to: mack and make a donation at www.pledgie.com !
Added deprecation system. [#90 state:resolved]
markbates (author)
Fri Aug 15 08:18:47 -0700 2008
commit  650cf562ef808648221a2029f415c9f0e8329f30
tree    484d0fa3b474be4fcd92e3705df6c12fb8c90217
parent  da506c7eae535567f53b14254a8449e796d956f1
...
1
 
2
3
4
5
6
...
16
17
18
 
19
 
20
21
22
...
 
1
2
 
3
4
5
...
15
16
17
18
19
20
21
22
23
0
@@ -1,6 +1,5 @@
0
-* [#68] Removed const redefined warnings if mack-l10n is used along with mack-activerecord
0
+* [#90] Added deprecation system.
0
 * [#88] Implemented pending SQLite3 tests in mack-activerecord
0
-* [#68] Transactional support in mack-AR
0
 * [#87] Refactored out common ORM code from mack-active_record and mack-data_mapper into mack-orm
0
 * [#86] stylesheet link helper
0
 * [#85] Refactored out Mack::ViewHelpers::HtmlHelpers into Mack::ViewHelpers::HtmlHelpers, Mack::ViewHelpers::FormHelpers and
0
@@ -16,7 +15,9 @@
0
 * [#74] Added optional feature to disable initialization logging.
0
 * [#73] Tests no longer use the functional/unit directories
0
 * [#69] Added ViewHelperGenerator and ControllerHelperGenerator
0
+* [#68] Transactional support in mack-AR
0
 * [#67] Added test:setup tasks for active_record and data_mapper
0
+* [#62] Removed const redefined warnings if mack-l10n is used along with mack-activerecord
0
 * [#39] HAML 2.0.2 support
0
 * [#28] Refactored out encryption into the mack-encryption gem.
0
 * [#25] Added ControllerGenerator
...
5
6
7
8
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
11
12
...
16
17
18
19
20
21
22
23
24
 
 
 
 
 
 
 
 
25
26
27
28
...
5
6
7
 
 
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
30
31
32
 
 
 
 
 
 
33
34
35
36
37
38
39
40
41
42
43
44
0
@@ -5,8 +5,22 @@ module Kernel
0
     yield Mack::Utils::GemManager.instance
0
   end
0
   
0
-  def alias_deprecated_method(deprecated_method, new_method, version_deprecrated = nil, version_to_be_removed = nil) # :nodoc:
0
-    message = "DEPRECATED: '#{deprecated_method}'. Please use '#{new_method}' instead."
0
+  # Aliases the deprecated method to the new method and logs a warning.
0
+  def alias_deprecated_method(deprecated_method, new_method, version_deprecrated = nil, version_to_be_removed = nil)
0
+    eval %{
0
+      def #{deprecated_method}(*args)
0
+        deprecate_method(:#{deprecated_method}, :#{new_method}, "#{version_deprecrated}", "#{version_to_be_removed}")
0
+        #{new_method}(*args)
0
+      end
0
+    }
0
+  end
0
+  
0
+  # Logs a warning that a method has been deprecated. Warnings will only get logged once.
0
+  def deprecate_method(deprecated_method, new_method = nil, version_deprecrated = nil, version_to_be_removed = nil)
0
+    message = "DEPRECATED: '#{deprecated_method}'."
0
+    if new_method
0
+      message << " Please use '#{new_method}' instead."
0
+    end
0
     if version_deprecrated
0
       message << " Deprecated in version: '#{version_deprecrated}'."
0
       if version_to_be_removed.nil?
0
@@ -16,12 +30,14 @@ module Kernel
0
     if version_to_be_removed
0
       message << " To be removed in version: '#{version_to_be_removed}'."
0
     end
0
-    eval %{
0
-      def #{deprecated_method}(*args)
0
-        Mack.logger.warn("#{message}")
0
-        #{new_method}(*args)
0
-      end
0
-    }
0
+    unless Kernel::DeprecatedRegistryList.registered_items.include?(message)
0
+      Mack.logger.warn(message)
0
+      Kernel::DeprecatedRegistryList.add(message)
0
+    end
0
+  end
0
+  
0
+  private
0
+  class DeprecatedRegistryList < Mack::Utils::RegistryList # :nodoc:
0
   end
0
   
0
 end
0
\ No newline at end of file

Comments