svnno****@sourc*****
svnno****@sourc*****
2009年 8月 15日 (土) 04:12:53 JST
Revision: 959 http://sourceforge.jp/projects/hiki/svn/view?view=rev&revision=959 Author: fdiary Date: 2009-08-15 04:12:53 +0900 (Sat, 15 Aug 2009) Log Message: ----------- * hiki/config.rb (load_cgi_conf): call eval() with binding, that is required for Ruby 1.9. * hiki/db/ptstore.rb: define commit_new if missing, that is required for Ruby 1.9. * hiki/db/tmarshal.rb: use Array#join instead of Array#to_s, whose specification is different between Ruby 1.8 and Ruby 1.9 Modified Paths: -------------- hiki/trunk/hiki/config.rb hiki/trunk/hiki/db/ptstore.rb hiki/trunk/hiki/db/tmarshal.rb Modified: hiki/trunk/hiki/config.rb =================================================================== --- hiki/trunk/hiki/config.rb 2009-08-09 10:50:08 UTC (rev 958) +++ hiki/trunk/hiki/config.rb 2009-08-14 19:12:53 UTC (rev 959) @@ -5,7 +5,7 @@ module Hiki VERSION = '0.8.8' - RELEASE_DATE = '2009-08-09' + RELEASE_DATE = '2009-08-14' end # For backward compatibility @@ -217,14 +217,19 @@ begin cgi_conf = File.open( @config_file ){|f| f.read }.untaint cgi_conf.gsub!( /^[@$]/, '' ) - def_vars = '' - variables.each do |var| def_vars << "#{var} = nil\n" end - eval( def_vars ) + def_vars1 = '' + def_vars2 = '' + variables.each do |var| + def_vars1 << "#{var} = nil\n" + def_vars2 << "@#{var} = #{var} unless #{var} == nil\n" + end + b = binding.taint + eval( def_vars1, b ) Thread.start { $SAFE = 4 eval( cgi_conf, binding, "(hiki.conf)", 1 ) }.join - variables.each do |var| eval "@#{var} = #{var} if #{var} != nil" end + eval( def_vars2, b ) rescue IOError, Errno::ENOENT end @mail = [@mail].flatten # for backward compatibility Modified: hiki/trunk/hiki/db/ptstore.rb =================================================================== --- hiki/trunk/hiki/db/ptstore.rb 2009-08-09 10:50:08 UTC (rev 958) +++ hiki/trunk/hiki/db/ptstore.rb 2009-08-14 19:12:53 UTC (rev 959) @@ -116,6 +116,21 @@ def load_file(file) TMarshal::load(file) end + + private + + # for Ruby 1.9 + unless private_method_defined?('commit_new') + def commit_new(f) + f.truncate(0) + f.rewind + new_file = @filename + ".new" + File.open(new_file, RD_ACCESS) do |nf| + FileUtils.copy_stream(nf, f) + end + File.unlink(new_file) + end + end end if __FILE__ == $0 Modified: hiki/trunk/hiki/db/tmarshal.rb =================================================================== --- hiki/trunk/hiki/db/tmarshal.rb 2009-08-09 10:50:08 UTC (rev 958) +++ hiki/trunk/hiki/db/tmarshal.rb 2009-08-14 19:12:53 UTC (rev 959) @@ -33,9 +33,9 @@ when String obj.dump when Array - "[\n"+obj.collect{|x| dump_text(x)+",\n"}.to_s+"]" + "[\n"+obj.collect{|x| dump_text(x)+",\n"}.join+"]" when Hash - "{\n"+obj.sort_by{|e| e[0].inspect}.collect{|k,v| "#{dump_text(k)} => #{dump_text(v)},\n"}.to_s+"}" + "{\n"+obj.sort_by{|e| e[0].inspect}.collect{|k,v| "#{dump_text(k)} => #{dump_text(v)},\n"}.join+"}" when Numeric, Module, Regexp, Symbol, TrueClass, FalseClass, NilClass, Range obj.inspect when Time @@ -45,3 +45,7 @@ end end end + +if __FILE__ == $0 + puts TMarshal.dump({:age => 22, :lang => 'Ruby', :man => true, :day => Time.now}) +end