Hi !

I have a little problem here.  r3169, "Enable warnings on first load
only. File which are loaded but raise an exception are not added to
loaded set" http://dev.rubyonrails.org/changeset/3169 causes stack
level too deep errors while loading my models, using the console.

$ svn up -r3169 vendor\rails
At revision 3169.

$ ruby script\console
Loading development environment.
>> GreenbackTransaction.new
SystemStackError: stack level too deep
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/inflector.rb:121:in
`underscore'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:780:in
`require_association_class'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:355:in
`has_many_without_reflection'
        from (eval):5:in `has_many'
        from 
./script/../config/../config/../app/models/greenback_transaction.rb:2
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:228:in
`load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:228:in
`load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:52:in
`require_or_load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:52:in
`enable_warnings'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:52:in
`require_or_load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:28:in
`depend_on'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:36:in
`associate_with'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:200:in
`require_association'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:200:in
`require_association'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:780:in
`require_association_class'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:524:in
`belongs_to_without_reflection'
... 945 levels...
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:200:in
`require_association'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:200:in
`require_association'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:780:in
`require_association_class'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/active_record/associations.rb:355:in
`has_many_without_reflection'
        from (eval):5:in `has_many'
        from 
./script/../config/../config/../app/models/greenback_transaction.rb:2
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:228:in
`load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:228:in
`load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:52:in
`require_or_load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:52:in
`enable_warnings'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:52:in
`require_or_load'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:28:in
`depend_on'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:199:in
`require_dependency'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:199:in
`require_dependency'
        from 
./script/../config/../config/../vendor/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:215:in
`const_missing'
        from (irb):1>> exit

$ svn up -r3168 vendor\rails
D    vendor\rails\activesupport\test\dependencies\raises_exception.rb
D    vendor\rails\activesupport\test\dependencies\check_warnings.rb
U    vendor\rails\activesupport\test\dependencies_test.rb
U    vendor\rails\activesupport\lib\active_support\dependencies.rb
U    vendor\rails\activesupport\CHANGELOG
Updated to revision 3168.

$ ruby script\console
Loading development environment.
>> GreenbackTransaction.new
=> #<GreenbackTransaction:0x3733f50 @new_record=true,
@attributes={"reason"=>""}>
>> exit

The two models in question are:
class GreenbackTransaction < ActiveRecord::Base
  has_many :members, :foreign_key => 'transaction_id',
                     :class_name => 'TransactionMember'
end

class TransactionMember < ActiveRecord::Base
  belongs_to :transaction, :class_name => 'GreenbackTransaction',
                           :foreign_key => 'transaction_id'
end

I found out about this when I couldn't save one of my models.  Strange
way to find this error, but as I wanted to check if I was doing things
correctly in the console, I hit upon this error.

Since then, I have created a new Rails application and used the models
above and this schema:
class InitialSchema < ActiveRecord::Migration
  def self.up
    create_table :greenback_transactions do |t|
      t.column :reason, :string, :limit => 20, :null => false
    end

    create_table :transaction_members do |t|
      t.column :transaction_id, :integer, :null => false
      t.column :amount, :integer, :null => false
    end
  end

  def self.down
  end
end

Both models are valid Ruby:
$ ruby -c app\models\greenback_transaction.rb
Syntax OK

$ ruby -c app\models\transaction_member.rb
Syntax OK

What needs to be done:
1. Someone else should reproduce this using another environment (WinXP
SP2, Ruby 1.8.2, [EMAIL PROTECTED])

2. Find out why this changeset is causing this problem.  bitsweat is
the author of this changeset, and I assume he could help.

If you need anything else, I'm all ears.

Bye !
--
François Beausoleil
http://blog.teksol.info/
_______________________________________________
Rails-core mailing list
Rails-core@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails-core

Reply via email to