[#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:30138] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9
Can we please get this committed for 1.9.2?
- Evan
On May 5, 2010, at 3:17 PM, Evan Phoenix wrote:
> Since no one has responded, nobu, can you go ahead and commit it?
>
> - Evan
>
> On Apr 25, 2010, at 7:16 PM, Evan Phoenix wrote:
>
>> See comment on patch below. Other than my comments, I'm fine with this.
>>
>> Eric / Rich, could you weigh in?
>>
>> - Evan
>>
>> On Apr 25, 2010, at 11:11 AM, Nobuyoshi Nakada wrote:
>>
>>> Hi,
>>>
>>> At Fri, 16 Apr 2010 03:08:27 +0900,
>>> Evan Phoenix wrote in [ruby-core:29537]:
>>>> This moves the RubyGem custom require into the prelude and
>>>> triggers the full loading of RubyGems itself if the normal
>>>> require raises a LoadError. It fixes the problem because the
>>>> highest version gems are no longer pushed on $LOAD_PATH,
>>>> allowing RubyGems to activate gems and the proper
>>>> dependencies.
>>>
>>> I don't like the duplication, so changed to keep #require
>>> staying in custom_require.rb and introduce Gem.try_activate.
>>>
>>>
>>> diff --git c/common.mk i/common.mk
>>> index 36174c3..30b31c8 100644
>>> --- c/common.mk
>>> +++ i/common.mk
>>> @@ -733,7 +733,9 @@ known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_
>>> miniprelude.c: $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb
>>> $(BASERUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb $@
>>>
>>> -prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(srcdir)/lib/rubygems/defaults.rb $(PRELUDE_SCRIPTS) $(PREP)
>>> +prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) \
>>> + $(srcdir)/lib/rubygems/defaults.rb $(srcdir)/lib/rubygems/custom_require.rb \
>>> + $(PRELUDE_SCRIPTS) $(PREP)
>>> $(COMPILE_PRELUDE) $(PRELUDE_SCRIPTS) $@
>>>
>>> golf_prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(srcdir)/prelude.rb $(srcdir)/golf_prelude.rb $(PREP)
>>> diff --git c/gem_prelude.rb i/gem_prelude.rb
>>> index 71f30bd..09b8f3a 100644
>>> --- c/gem_prelude.rb
>>> +++ i/gem_prelude.rb
>>> @@ -1,4 +1,3 @@
>>> -# depends on: array.rb dir.rb env.rb file.rb hash.rb module.rb regexp.rb
>>> # vim: filetype=ruby
>>>
>>> # NOTICE: Ruby is during initialization here.
>>> @@ -13,7 +12,8 @@ if defined?(Gem) then
>>> module Kernel
>>>
>>> def gem(gem_name, *version_requirements)
>>> - Gem.push_gem_version_on_load_path(gem_name, *version_requirements)
>>> + Gem::QuickLoader.load_full_rubygems_library
>>> + gem gem_name, *version_requirements
>>> end
>>> private :gem
>>> end
>>> @@ -133,29 +133,27 @@ if defined?(Gem) then
>>> end
>>>
>>> module QuickLoader
>>> -
>>> - @loaded_full_rubygems_library = false
>>> -
>>> def self.load_full_rubygems_library
>>> - return if @loaded_full_rubygems_library
>>> + return @loaded_full_rubygems_library if defined?(@loaded_full_rubygems_library)
>>>
>>> - @loaded_full_rubygems_library = true
>>> + @loaded_full_rubygems_library = false
>>>
>>> class << Gem
>>> undef_method(*Gem::GEM_PRELUDE_METHODS)
>>> - undef_method :const_missing
>>> - undef_method :method_missing
>>> - end
>>> -
>>> - Kernel.module_eval do
>>> - undef_method :gem if method_defined? :gem
>>> end
>>>
>>> $".delete path_to_full_rubygems_library
>>> if $".any? {|path| path.end_with?('/rubygems.rb')}
>>> raise LoadError, "another rubygems is already loaded from #{path}"
>>> end
>>> +
>>> + verbose, debug = $VERBOSE, $DEBUG
>>> + $VERBOSE = $DEBUG = nil
>>> +
>>> require 'rubygems'
>>> + @loaded_full_rubygems_library = true
>>> + ensure
>>> + $VERBOSE, $DEBUG = verbose, debug
>>> end
>>>
>>> def self.fake_rubygems_as_loaded
>>> @@ -177,95 +175,6 @@ if defined?(Gem) then
>>> end
>>> end
>>>
>>> - GemPaths = {}
>>> - GemVersions = {}
>>> -
>>> - def push_gem_version_on_load_path(gem_name, *version_requirements)
>>> - if version_requirements.empty?
>>> - unless GemPaths.has_key?(gem_name) then
>>> - raise Gem::LoadError, "Could not find RubyGem #{gem_name} (>= 0)\n"
>>> - end
>>> -
>>> - # highest version gems already active
>>> - return false
>>> - else
>>> - if version_requirements.length > 1 then
>>> - QuickLoader.load_full_rubygems_library
>>> - return gem(gem_name, *version_requirements)
>>> - end
>>> -
>>> - requirement, version = version_requirements[0].split
>>> - requirement.strip!
>>> -
>>> - if loaded_version = GemVersions[gem_name] then
>>> - case requirement
>>> - when ">", ">=" then
>>> - return false if
>>> - (loaded_version <=> Gem.integers_for(version)) >= 0
>>> - when "~>" then
>>> - required_version = Gem.integers_for version
>>> -
>>> - return false if loaded_version.first == required_version.first
>>> - end
>>> - end
>>> -
>>> - QuickLoader.load_full_rubygems_library
>>> - gem gem_name, *version_requirements
>>> - end
>>> - end
>>> -
>>> - def integers_for(gem_version)
>>> - numbers = gem_version.split(".").collect {|n| n.to_i}
>>> - numbers.pop while numbers.last == 0
>>> - numbers << 0 if numbers.empty?
>>> - numbers
>>> - end
>>> -
>>> - def push_all_highest_version_gems_on_load_path
>>> - Gem.path.each do |path|
>>> - gems_directory = File.join(path, "gems")
>>> -
>>> - if File.exist?(gems_directory) then
>>> - Dir.entries(gems_directory).each do |gem_directory_name|
>>> - next if gem_directory_name == "." || gem_directory_name == ".."
>>> -
>>> - next unless gem_name = gem_directory_name[/(.*)-(.*)/, 1]
>>> - new_version = integers_for($2)
>>> - current_version = GemVersions[gem_name]
>>> -
>>> - if !current_version or (current_version <=> new_version) < 0 then
>>> - GemVersions[gem_name] = new_version
>>> - GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
>>> - end
>>> - end
>>> - end
>>> - end
>>> -
>>> - require_paths = []
>>> -
>>> - GemPaths.each_value do |path|
>>> - if File.exist?(file = File.join(path, ".require_paths")) then
>>> - paths = File.read(file).split.map do |require_path|
>>> - File.join path, require_path
>>> - end
>>> -
>>> - require_paths.concat paths
>>> - else
>>> - require_paths << file if File.exist?(file = File.join(path, "bin"))
>>> - require_paths << file if File.exist?(file = File.join(path, "lib"))
>>> - end
>>> - end
>>> -
>>> - # "tag" the first require_path inserted into the $LOAD_PATH to enable
>>> - # indexing correctly with rubygems proper when it inserts an explicitly
>>> - # gem version
>>> - unless require_paths.empty? then
>>> - require_paths.first.instance_variable_set(:@gem_prelude_index, true)
>>> - end
>>> - # gem directories must come after -I and ENV['RUBYLIB']
>>> - $:[$:.index{|e|e.instance_variable_defined?(:@gem_prelude_index)}||-1,0] = require_paths
>>> - end
>>> -
>>> def const_missing(constant)
>>> QuickLoader.load_full_rubygems_library
>>>
>>> @@ -285,10 +194,15 @@ if defined?(Gem) then
>>>
>>> extend QuickLoader
>>>
>>> + def self.try_activate(path) # :nodoc:
>>> + QuickLoader.load_full_rubygems_library
>>> + end
>>> +
>>> end
>>
>> Doesn't the try_activate in prelude need to load full rubygems, then call try_activate again so that the proper version is called the first time try_activate is used?
>>
>>>
>>> begin
>>> - Gem.push_all_highest_version_gems_on_load_path
>>> + require 'lib/rubygems/custom_require.rb'
>>> +
>>> Gem::QuickLoader.fake_rubygems_as_loaded
>>> rescue Exception => e
>>> puts "Error loading gem paths on load path in gem_prelude"
>>> diff --git c/lib/rubygems.rb i/lib/rubygems.rb
>>> index d2214f6..29dd815 100644
>>> --- c/lib/rubygems.rb
>>> +++ i/lib/rubygems.rb
>>> @@ -1020,8 +1020,6 @@ end
>>>
>>> module Kernel
>>>
>>> - undef gem if respond_to? :gem # defined in gem_prelude.rb on 1.9
>>> -
>>> ##
>>> # Use Kernel#gem to activate a specific version of +gem_name+.
>>> #
>>> @@ -1098,13 +1096,34 @@ end
>>>
>>> require 'rubygems/config_file'
>>>
>>> +class << Gem
>>> + verbose, debug = $VERBOSE, $DEBUG
>>> + $VERBOSE = $DEBUG = nil
>>
>> Why is setting $VERBOSE and $DEBUG needed?
>>
>>> +
>>> + ##
>>> + #
>>> + # Called from the custom_require to attempt to activate +path+
>>> + # Internal use only.
>>> +
>>> + def try_activate(path) # :doc:
>>> + spec = Gem.searcher.find(path)
>>> + return false unless spec
>>> +
>>> + Gem.activate(spec.name, "= #{spec.version}")
>>> + return true
>>> + end
>>> +
>>> +ensure
>>> + $VERBOSE, $DEBUG = verbose, debug
>>> +end
>>> +
>>> ##
>>> # Enables the require hook for RubyGems.
>>> #
>>> # Ruby 1.9 allows --disable-gems, so we require it when we didn't detect a Gem
>>> # constant at rubygems.rb load time.
>>>
>>> -require 'rubygems/custom_require' if gem_disabled or RUBY_VERSION < '1.9'
>>> +require 'rubygems/custom_require'
>>>
>>> Gem.clear_paths
>>>
>>> diff --git c/lib/rubygems/custom_require.rb i/lib/rubygems/custom_require.rb
>>> index 43b3136..343ad31 100644
>>> --- c/lib/rubygems/custom_require.rb
>>> +++ i/lib/rubygems/custom_require.rb
>>> @@ -4,8 +4,6 @@
>>> # See LICENSE.txt for permissions.
>>> #++
>>>
>>> -require 'rubygems'
>>> -
>>> module Kernel
>>>
>>> ##
>>> @@ -31,8 +29,7 @@ module Kernel
>>> gem_original_require path
>>> rescue LoadError => load_error
>>> if load_error.message.end_with?(path) and
>>> - spec = Gem.searcher.find(path) then
>>> - Gem.activate(spec.name, "= #{spec.version}")
>>> + Gem.try_activate(path) then
>>> gem_original_require path
>>> else
>>> raise load_error
>>> @@ -42,5 +39,5 @@ module Kernel
>>> private :require
>>> private :gem_original_require
>>>
>>> -end
>>> +end unless Kernel.private_method_defined?(:gem_original_require)
>>>
>>>
>>>
>>> --
>>> Nobu Nakada
>>>
>>>
>>
>>
>>
>
>
>