diff --git a/.idea/design_patterns_in_ruby.iml b/.idea/design_patterns_in_ruby.iml index 8f7472a..e1d8dd1 100644 --- a/.idea/design_patterns_in_ruby.iml +++ b/.idea/design_patterns_in_ruby.iml @@ -1,5 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index f0236b0..85aa5d6 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,47 +2,14 @@ - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -68,16 +37,52 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -123,11 +128,6 @@ @@ -174,6 +179,7 @@ + @@ -222,7 +228,6 @@ - @@ -240,128 +245,135 @@ - + - + - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + - + - + - + - + + + + + @@ -372,7 +384,7 @@ - + @@ -389,6 +401,7 @@ + @@ -401,7 +414,7 @@ - + @@ -412,6 +425,9 @@ + + + @@ -422,7 +438,7 @@ - + @@ -435,23 +451,28 @@ + + + + + - - - - - + + + + + - - + + - - + + @@ -503,23 +524,28 @@ 1281993996010 1281993996010 + + 1380051823307 + 1380051823307 + + - + + - - + + - - + @@ -530,65 +556,23 @@ + - - @@ -605,88 +589,108 @@ file://$PROJECT_DIR$/../../ui-r16/src/vendor/plugins/triton/app/helpers/triton/display_banner_helper.rb 12 + + file://$PROJECT_DIR$/meta_tricks/class_field_and_instance_field_and_class_instance_field.rb + 24 + + + file://$PROJECT_DIR$/meta_tricks/class_field_and_instance_field_and_class_instance_field.rb + 1 + + - - - - - - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..5dce7fc --- /dev/null +++ b/Rakefile @@ -0,0 +1,9 @@ +#!/usr/bin/env rake + +include Rake::DSL + +task :fix_debug do + system "mkdir -p $GEM_HOME/gems/debugger-ruby_core_source-1.2.3/lib" + system "cp -R ~/debugger-ruby_core_source/lib $GEM_HOME/gems/debugger-ruby_core_source-1.2.3" +end + diff --git a/meta_tricks/class_field_and_instance_field_and_class_instance_field.rb b/meta_tricks/class_field_and_instance_field_and_class_instance_field.rb new file mode 100644 index 0000000..a818e4d --- /dev/null +++ b/meta_tricks/class_field_and_instance_field_and_class_instance_field.rb @@ -0,0 +1,31 @@ +class TestMethods + @class_instance_field = 'value_for_class_instance_field' + + def initialize + @@class_field = 'value_for_class_field' + + @instance_field = 'value_for_instance_field' + end + + def self.class_field + @@class_field + end + + def instance_field + @instance_field + end + + def self.class_instance_field + @class_instance_field + end +end + +# test + +instance = TestMethods.new + +puts TestMethods.class_field + +puts instance.instance_field + +puts TestMethods.class_instance_field diff --git a/meta_tricks/utility_module.rb b/meta_tricks/utility_module.rb new file mode 100644 index 0000000..06a4113 --- /dev/null +++ b/meta_tricks/utility_module.rb @@ -0,0 +1,40 @@ +module UtilityModule1 + extend self + + def some_method + "some_method1" + end +end + +module UtilityModule2 + module_function # this is preferable over extend self + + def some_method + "some_method2" + end +end + +module UtilityModule3 + class << self + def some_method + "some_method3" + end + end +end + +require 'singleton' + +class UtilityModule4 + include Singleton + + def some_method + "some_method4" + end +end + +# test + +puts UtilityModule1.some_method +puts UtilityModule2.some_method +puts UtilityModule3.some_method +puts UtilityModule4.instance.some_method