[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>
Bug #3231: Digest Does Not Build
[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>
Feature #3232: Loops (while/until) should return last statement value if any, like if/unless
Hi,
On 2 May 2010 01:56, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On 2 May 2010 15:24:52 UTC+2, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
[#29953] [Bug #3241] gem update --system Segmentation fault — Benedikt Eickhoff <redmine@...>
Bug #3241: gem update --system Segmentation fault
Hi,
On Mon, May 03, 2010 at 08:55:14PM +0900, Yusuke ENDOH wrote:
[#29993] [Feature:trunk] thread-local yamler — Nobuyoshi Nakada <nobu@...>
Hi,
[#29997] years in Time.utc — Xavier Noria <fxn@...>
Does anyone have a precise statement about the years supported by
On Tue, May 4, 2010 at 8:05 AM, Xavier Noria <fxn@hashref.com> wrote:
Hi,
Hi,
[#30002] 1.9.1 lib dirs? — Roger Pack <rogerdpack2@...>
Hi all.
On Tue, May 4, 2010 at 3:00 PM, Roger Pack <rogerdpack2@gmail.com> wrote:
[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>
Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly
Issue #3248 has been updated by Luis Lavena.
[#30023] [Bug #3250] [BUG] Segmentation fault — Diogo Almeida <redmine@...>
Bug #3250: [BUG] Segmentation fault
[#30070] [Bug #3255] Trunk fail to build without explicit ./configure options (yaml.h not found) — Benoit Daloze <redmine@...>
Bug #3255: Trunk fail to build without explicit ./configure options (yaml.h not found)
Hi,
[#30094] suggestion: switch default name for BINARY encoding — Roger Pack <rogerdpack2@...>
Situation:
(2010/05/08 7:50), Roger Pack wrote:
[#30145] [Bug #3273] Float string conversion — Marc-Andre Lafortune <redmine@...>
Bug #3273: Float string conversion
[#30154] [Bug #3275] incompatibility of testrb — Yusuke Endoh <redmine@...>
Bug #3275: incompatibility of testrb
[#30175] [Problem] DATA and __END__ in a loaded rb file — Charles Cui <zheng.cuizh@...>
how to get global constant DATA in file <a.rb>,if a.rb is loaded by b.rb.
[#30182] [Bug #3281] fail to build fiddle on Debian/lenny by default — Yusuke Endoh <redmine@...>
Bug #3281: fail to build fiddle on Debian/lenny by default
2010/5/12 Yusuke Endoh <redmine@ruby-lang.org>:
On Wed, May 12, 2010 at 11:26:44PM +0900, Tanaka Akira wrote:
2010/5/14 Aaron Patterson <aaron@tenderlovemaking.com>:
[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>
Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88
Issue #3288 has been updated by Szymon Je甜.
[#30249] [Bug #3299] revision.h rule in common.mk is broken for MSVC — Romulo Ceccon <redmine@...>
Bug #3299: revision.h rule in common.mk is broken for MSVC
[#30290] [Bug #3309] net/http calls leak memory and file handles in windows — Pete Higgins <redmine@...>
Bug #3309: net/http calls leak memory and file handles in windows
[#30315] [Bug #3320] emacs ruby-mode.el font-lock fails on symboled string ending with ? — Zev Blut <redmine@...>
Bug #3320: emacs ruby-mode.el font-lock fails on symboled string ending with ?
[#30323] [Feature #3322] Simple Patch to make ruby copy-on-write-friendly — Daniel DeLorme <redmine@...>
Feature #3322: Simple Patch to make ruby copy-on-write-friendly
[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>
Currently with 1.9.x and tk 8.5,the following occurs
From: Roger Pack <rogerdpack2@gmail.com>
> Does it occur with RubyTk-Kit version (it based on latest tcltklib.c)?
[#30401] [Bug #3336] Memory leak in IO.select() on Windows — HD Moore <redmine@...>
Bug #3336: Memory leak in IO.select() on Windows
[#30406] [Bug #3337] MS-DOS device names are identified as readable_real — HD Moore <redmine@...>
Bug #3337: MS-DOS device names are identified as readable_real
[#30434] [Feature #3346] __DIR__ revisted — Thomas Sawyer <redmine@...>
Feature #3346: __DIR__ revisted
[#30449] [Bug #3350] Protected methods & documentation — Marc-Andre Lafortune <redmine@...>
Bug #3350: Protected methods & documentation
[#30451] [Bug #3352] Delegates: protected methods — Marc-Andre Lafortune <redmine@...>
Bug #3352: Delegates: protected methods
[#30513] [Bug #3365] floats revisited (see bug 1841) — Roberto Tomás Collins McCarthy <redmine@...>
Bug #3365: floats revisited (see bug 1841)
[ruby-core:29993] [Feature:trunk] thread-local yamler
Hi,
Currently, YAML.yamler= has an effect on the whole process.
What about making it thread-local?
diff --git a/lib/yaml.rb b/lib/yaml.rb
index 9b5a9b2..236489b 100644
--- a/lib/yaml.rb
+++ b/lib/yaml.rb
@@ -1,43 +1,68 @@
module YAML
- class EngineManager # :nodoc:
- attr_reader :yamler
+ class << self
+ def engine
+ ::Thread.current[:yamler] or
+ (ENGINE.yamler = ENGINE.default; ::Thread.current[:yamler])
+ end
- def initialize
- @yamler = nil
+ def const_defined?(name)
+ engine.const_defined?(name)
end
- def syck?
- 'syck' == @yamler
+ def const_get(name)
+ engine = self.engine
+ begin
+ engine.const_get(name)
+ rescue NameError => e
+ raise NameError, "uninitialized constant #{self}::#{name}", caller(2)
+ end
end
- def yamler= engine
- raise(ArgumentError, "bad engine") unless %w{syck psych}.include?(engine)
+ alias const_missing const_get
- require engine
+ def method_missing(name, *args, &block)
+ engine.__send__(name, *args, &block)
+ end
- Object.class_eval <<-eorb, __FILE__, __LINE__ + 1
- remove_const 'YAML'
- YAML = #{engine.capitalize}
- remove_method :to_yaml
- alias :to_yaml :#{engine}_to_yaml
- eorb
+ def respond_to_missing?(name)
+ engine.respond_to?(name)
+ end
+
+ private
+
+ def extend_object(obj)
+ engine.__send__(:extend_object, obj)
+ end
- @yamler = engine
- engine
+ def append_features(mod)
+ engine.__send__(:append_features, mod)
end
end
- ENGINE = YAML::EngineManager.new
-end
+ class << (ENGINE = Object.new) # :nodoc:
+ def default
+ !defined?(Syck) && defined?(Psych) ? 'psych' : 'syck'
+ end
-engine = (!defined?(Syck) && defined?(Psych) ? 'psych' : 'syck')
+ def yamler
+ if engine = YAML.engine
+ engine.name.downcase
+ else
+ default
+ end
+ end
-module Syck
- ENGINE = YAML::ENGINE
-end
+ def syck?
+ 'syck' == yamler
+ end
-module Psych
- ENGINE = YAML::ENGINE
-end
+ def yamler= engine
+ raise(ArgumentError, "bad engine") unless %w{syck psych}.include?(engine)
+ require engine
+ engine = ::Object.const_get(engine.capitalize)
+ ::Thread.current[:yamler] = engine
+ end
+ end
-YAML::ENGINE.yamler = engine
+ ENGINE.freeze
+end
--
Nobu Nakada