Tzinfo_timezone plugin - Object::TimeZone not defined

I am trying to get my rails project working on a new machine. I am using
OpenSuse 10.3 and following steps were performed,

  1. installed rubygems
  2. installed Rails (1.x) using Suse repository - it didn’t have latest
    version.
  3. updated gem version and Rails version.
  4. installed other gems such rcov
  5. installed ‘tzinfo_timezone’ plugin

Now ‘rake db:create:all’ or ‘script/server’ gives me error as -


/home/pavgi/agenda32/vendor/plugins/tzinfo_timezone/init.rb:4:in
`remove_const': constant Object::TimeZone not defined (NameError)
        from
/home/pavgi/agenda32/vendor/plugins/tzinfo_timezone/init.rb:4:in `send'
        from
/home/pavgi/agenda32/vendor/plugins/tzinfo_timezone/init.rb:4:in
`evaluate_init_rb'
        from
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin.rb:103:in
`evaluate_init_rb'
        from
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/reporting.rb:11:in
`silence_warnings'
        from
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin.rb:99:in
`evaluate_init_rb'
        from
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin.rb:44:in `load'
        from
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin/loader.rb:33:in
`load_plugins'
        from
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin/loader.rb:32:in
`each'
         ... 17 levels...
        from
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
        from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
        from
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from script/server:3

Now, if I comment out the line init.rb:4

Object.send(:remove_const, :TimeZone)

then above rake command and server start runs successfully. What and
where could be the problem? Where do I define the constant
Object::TimeZone? Any help for debugging? (The same code runs
successfully on my old machine.)

Thanks,
Shantanu.

I don’t know the reason behind this problem. I fixed (bypassed?) it by
adding if condition in the tzinfo_timezone plugin’s init.rb file.
require ‘tzinfo_timezone’
New init.rb file:

remove the existing TimeZone constant

if Object.const_defined?(:TimeZone)
Object.send(:remove_const, :TimeZone)
end

Use TzinfoTimezone as the TimeZone class

Object::TimeZone = TzinfoTimezone

Please reply if you know the reason behind this problem.

Shantanu.

Shantanu P. wrote:

I am trying to get my rails project working on a new machine. I am using
OpenSuse 10.3 and following steps were performed,

  1. installed rubygems
  2. installed Rails (1.x) using Suse repository - it didn’t have latest
    version.
  3. updated gem version and Rails version.
  4. installed other gems such rcov
  5. installed ‘tzinfo_timezone’ plugin

Now ‘rake db:create:all’ or ‘script/server’ gives me error as -


> /home/pavgi/agenda32/vendor/plugins/tzinfo_timezone/init.rb:4:in
> `remove_const': constant Object::TimeZone not defined (NameError)
>         from
> /home/pavgi/agenda32/vendor/plugins/tzinfo_timezone/init.rb:4:in `send'
>         from
> /home/pavgi/agenda32/vendor/plugins/tzinfo_timezone/init.rb:4:in
> `evaluate_init_rb'
>         from
> /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin.rb:103:in
> `evaluate_init_rb'
>         from
> /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/reporting.rb:11:in
> `silence_warnings'
>         from
> /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin.rb:99:in
> `evaluate_init_rb'
>         from
> /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin.rb:44:in `load'
>         from
> /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin/loader.rb:33:in
> `load_plugins'
>         from
> /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/plugin/loader.rb:32:in
> `each'
>          ... 17 levels...
>         from
> /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
>         from
> /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> `gem_original_require'
>         from
> /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
>         from script/server:3

Now, if I comment out the line init.rb:4

Object.send(:remove_const, :TimeZone)

then above rake command and server start runs successfully. What and
where could be the problem? Where do I define the constant
Object::TimeZone? Any help for debugging? (The same code runs
successfully on my old machine.)

Thanks,
Shantanu.

Just checked tzinfo_timezone plugin mailing list and found the solution:
Check:
http://rubyforge.org/pipermail/tzinfo-users/2008-December/000074.html

Thanks,
Shantanu.