Sorry ignore the :013-:016 there. Try to multitask / clean-up that and 
failed.

On Tuesday, February 18, 2014 4:14:59 PM UTC-5, Gary Weaver wrote:
>
> Notice how a class that is not available is a NameError and a constant 
> unloaded from ActiveSupport::Dependencies or via remove_const called on the 
> module is a RuntimeError about a circular dependency...
>
> The class I unloaded has no references to or from anywhere else.
>
> Just to show how a missing constant behaves normally:
>
> Loading development environment (Rails 4.0.2)
> 2.1.0 :001 > Nothing::Nothing.to_s
> NameError: uninitialized constant Nothing
>   from (irb):1
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:90:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:9:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands.rb:62:in `<top 
> (required)>'
>   from bin/rails:4:in `require'
>   from bin/rails:4:in `<main>'
>
> Now, how a missing constant behaves after being undefined by Rails 4.0.2:
>
> 2.1.0 :002 > Object.const_defined? 'MyModule::MyClass'
>  => false 
> 2.1.0 :003 > MyModule::MyClass.to_s
>  => "MyModule::MyClass" 
> 2.1.0 :004 > Object.const_defined? 'MyModule::MyClass'
>  => true 
> 2.1.0 :005 > ActiveSupport::Dependencies.remove_constant MyModule::MyClass
>  => MyModule::MyClass 
> 2.1.0 :006 > Object.const_defined? 'MyModule::MyClass'
>  => false 
> 2.1.0 :007 > MyModule::MyClass.to_s
> RuntimeError: Circular dependency detected while autoloading constant 
> MyModule::MyClass
>   from 
> /path/to/gemset/activesupport-4.0.2/lib/active_support/dependencies.rb:461:in 
> `load_missing_constant'
>   from 
> /path/to/gemset/activesupport-4.0.2/lib/active_support/dependencies.rb:184:in 
> `const_missing'
>   from (irb):7
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:90:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:9:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands.rb:62:in `<top 
> (required)>'
>   from bin/rails:4:in `require'
>   from bin/rails:4:in `<main>'
> 2.1.0 :008 > load 
> "#{Rails.root}/app/an_autoloaded_dir/my_module/my_class.rb"
>  => true 
> 2.1.0 :009 > MyModule::MyClass.to_s
>  => "MyModule::MyClass" 
> 2.1.0 :010 > MyModule.send(:remove_const, :MyClass)
>  => MyModule::MyClass 
> 2.1.0 :011 > Object.const_defined? 'MyModule::MyClass'
>  => false 
> 2.1.0 :012 > MyModule::MyClass.to_s
> RuntimeError: Circular dependency detected while autoloading constant 
> MyModule::MyClass
>   from 
> /path/to/gemset/activesupport-4.0.2/lib/active_support/dependencies.rb:461:in 
> `load_missing_constant'
>   from 
> /path/to/gemset/activesupport-4.0.2/lib/active_support/dependencies.rb:184:in 
> `const_missing'
>   from (irb):23
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:90:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:9:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands.rb:62:in `<top 
> (required)>'
>   from bin/rails:4:in `require'
>   from bin/rails:4:in `<main>'
> 2.1.0 :013 > load "#{Rails.root}/app/workflow/my_module/my_class.rb"
>  => true 
> 2.1.0 :015 > MyModule::MyClass.to_s
> NameError: uninitialized constant MyModule
>   from (irb):26
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:90:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands/console.rb:9:in 
> `start'
>   from /path/to/gemset/railties-4.0.2/lib/rails/commands.rb:62:in `<top 
> (required)>'
>   from bin/rails:4:in `require'
>   from bin/rails:4:in `<main>'
> 2.1.0 :016 > MyModule::MyClass.to_s
>  => "MyModule::MyClass" 
>
> I'm curious what the circular dependency would be there, since there are 
> no other references to the class, afaik.
>
> Thanks!
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to