[#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:30036] Re: [Bug #3140] gem activation has changed between 1.8 and 1.9
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
>>
>>
>
>
>