Sep 27
Todd Huss posted his thoughts on dealing with patches to dependencies that you rely on, in response to my Tweaking on the bleeding edge: Ruby vs. Java.
Sam Ruby found an issue in Rubys XmlMarkup builder.
He put up a fix for this which is very clean.
I much prefer this to a diff’d file for patch to run. Isn’t it a lot cleaner to see? A patch is real running code.
Also, since you are able to alias :foo :saved_foo
you can even do something and call that old method!
#!/usr/bin/env ruby #-- # Portions copyright 2004 by Jim Weirich (jim.weirichhouse.org). # Portions copyright 2005 by Sam Ruby (rubys.intertwingly.net). # All rights reserved. # Permission is granted for use, copying, modification, distribution, # and distribution of modified versions of this work as long as the # above copyright notice is included. #++ require 'config/environment' require 'builder' require 'test/unit' class Builder::XmlMarkup < Builder::XmlBase def _escape(text, extra={}) result = text. gsub(%r{&}, '&'). gsub(%r{<}, '<'). gsub(%r{>}, '>') extra.each_pair {|key,value| result.gsub!(key, value)} return result end # Insert the attributes (given in the hash). def _insert_attributes(attrs, order=[]) return if attrs.nil? q = {'"' => '"'} order.each do |k| v = attrs[k] @target << %{ #{k}="#{_escape(v,q)}"} if v end attrs.each do |k, v| @target << %{ #{k}="#{_escape(v,q)}"} unless order.member?(k) end end end class TestEscaping < Test::Unit::TestCase def setup @xml = Builder::XmlMarkup.new end def test_element_gt @xml.title('2>1') assert_equal '<title>2>1</title>', @xml.target! end def test_element_amp @xml.title('AT&T') assert_equal '<title>AT&T</title>', @xml.target! end def test_element_amp2 @xml.title('&') assert_equal '<title>&</title>', @xml.target! end def test_attr_less @xml.a(:title => '2>1') assert_equal '<a title="2>1"/>', @xml.target! end def test_attr_amp @xml.a(:title => 'AT&T') assert_equal '<a title="AT&T"/>', @xml.target! end def test_attr_quot @xml.a(:title => '"x"') assert_equal '<a title=""x""/>', @xml.target! end end
September 30th, 2005 at 2:43 pm
I thought this comment was a good description of how to transparently over-ride behaviour for a group of developers in Ruby. Now I better understand how you can quickly and safely fork a core library:
http://www.jroller.com/comments/thuss/Blog/forking_a_dependency_with_a#comments
June 5th, 2006 at 8:01 am
i want to ruby program to modifikasi my kernel
June 5th, 2006 at 8:07 am
i have plan to making clone my computer, i want linux program,but i have problem with my VGA card pci,please help me,how to making clone with linux,please send address to program ruby to modifikasi ruby patch.thanks b4.