Rails 2.1.2 to 2.3.2 problems

I just installed Rails 2.3.2 and tried to upgrade my test app from
2.1.2. After installing Rails 2.3.2, I simply changed the gem version
in my environment.rb file in config directory as shown below:

Specifies gem version of Rails to use when vendor/rails is not present

RAILS_GEM_VERSION = ‘2.3.2’ unless defined? RAILS_GEM_VERSION

The server refuses to start and I get the following stacktrace:

=> Booting Mongrel
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:416:in
initialize_database': undefined method configurations=’ for
ActiveRecord::Base:Class (NoMethodError)
from
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:141:in
process' from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in send’
from
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in
run' from /home/bruparel/exp/pizzeria-3/config/environment.rb:13 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require’
from
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require' from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in require’
from
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:521:in
new_constants_in' from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in require’
from
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:84
from
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in require’
from script/server:3

Change it back to 2.1.2 and I am fine. Is there something that is
missing? I do a rails -v and it shows that 2.3.2 is installed as shown
below:

bruparel@bcr-d810:~$ rails -v
Rails 2.3.2
bruparel@bcr-d810:~$

Thanks for your time.

Bharat

On Wed, Mar 25, 2009 at 2:09 PM, Bharat R. <
[email protected]> wrote:

=> Booting Mongrel
from

   from

Change it back to 2.1.2 and I am fine. Is there something that is
missing? I do a rails -v and it shows that 2.3.2 is installed as shown
below:

bruparel@bcr-d810:~$ rails -v
Rails 2.3.2
bruparel@bcr-d810:~$

Thanks for your time.

Bharat

Hi, did you update your configs?

rake rails:update

-Conrad

Hello Conrad,
you wrote:

Hi, did you update your configs?

rake rails:update

-Conrad

No. I had not done that, but after reading your reply I did, but I get
the same error :slight_smile: as can be seen below:

bruparel@bcr-d810:~/exp/pizzeria-3$ cd config/
bruparel@bcr-d810:~/exp/pizzeria-3/config$ vi environment.rb
bruparel@bcr-d810:~/exp/pizzeria-3/config$ cd …
bruparel@bcr-d810:~/exp/pizzeria-3$ rake rails:update
(in /home/bruparel/exp/pizzeria-3)
/home/bruparel/exp/pizzeria-3/app/controllers/application.rb has been
renamed to
/home/bruparel/exp/pizzeria-3/app/controllers/application_controller.rb,
update your SCM as necessary
bruparel@bcr-d810:~/exp/pizzeria-3$ ruby ./script/server
=> Booting Mongrel
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:416:in
initialize_database': undefined method configurations=’ for
ActiveRecord::Base:Class (NoMethodError)

Note that I edited the environment.rb to set Rails Gems to 2.3.2, but it
does not work.

Bharat

Hello Conrad,
I am making good progress towards resolving this, but am not there
entirely. Following is my abbreviated environment.rb file. Note that I
have commented out the RAILS_GEM_VERSION line so that the latest rails
2.3.2 is loaded.

Specifies gem version of Rails to use when vendor/rails is not present

#RAILS_GEM_VERSION = ‘2.1.2’ unless defined? RAILS_GEM_VERSION

Bootstrap the Rails environment, frameworks, and default configuration

require File.join(File.dirname(FILE), ‘boot’)

Rails::Initializer.run do |config|

Add additional load paths for your own custom dirs

config.load_paths += %W( #{RAILS_ROOT}/app/form_builders )

config.time_zone = ‘UTC’

config.action_controller.session = {
:session_key => ‘_pizzeria_session’,
:secret =>
‘1cac89a5ef8e67d30b297648243baee84a52d16dbbf11690733a73c825da43c327a6552f9498d0fe2ecf29cbc09ebf6115102fe3d26f969909f005dc1da39e09’
}

require “#{RAILS_ROOT}/lib/active_record_extensions.rb”

end

if I comment out the last require
“#{RAILS_ROOT}/lib/active_record_extensions.rb”

statement as shown below:

require “#{RAILS_ROOT}/lib/active_record_extensions.rb”

and restart the server then it boots and everything works fine except
where I need the functionality contained in
lib/active_record_extensions.rb file which is as follows:

module ActiveRecord

class Base
def self.search(search, current_page, search_field)
if search.blank?
paginate(:all, :page => current_page || 1, :per_page => 5)
else
paginate(:all, :conditions => ["#{search_field} LIKE ?",
“%#{search}%”], :order => ‘name’,
:page => current_page || 1, :per_page => 5)
end
end
end

end

Why does Rails 2.3.2 have a problem with it when 2.1.2 does not? The
error messages are very misleading and point to some problem with
database when there is none?

Figured it out:

Rails 2.3 has a problem with requiring any files within the initializer
block as shown below.

Rails::Initializer.run do |config|

require “#{RAILS_ROOT}/lib/active_record_extensions.rb”

end

Instead, it wants you to put your require statement outside the block as
shown below:

Rails::Initializer.run do |config|

end
require “#{RAILS_ROOT}/lib/active_record_extensions.rb”

This works. Why is it so? I do not know. If someone can explain this,
I would appreciate it.

Thanks.

Bharat

On Mar 25, 11:36 pm, Bharat R. [email protected]
wrote:

Figured it out:

Rails 2.3 has a problem with requiring any files within the initializer
block as shown below.

Rails::Initializer.run do |config|

require “#{RAILS_ROOT}/lib/active_record_extensions.rb”

end

ActiveRecord is not loaded at this point. The right place for this
sort of stuff is in an initializer (see

for ways where putting it at the bottom of environment.rb can go
wrong).

Fred

Thanks Fred. Here is what I did after reading the link that you posted:

I created the config/initializers/load_lib_dir.rb with the following
line of code:

Dir.glob( “#{ RAILS_ROOT }/lib/*.rb” ).each { |f| require f } <-- thanks
Greg.

I guess, I have some homework to do on the initializers.

Regards,

Bharat

ActiveRecord is not loaded at this point. The right place for this
sort of stuff is in an initializer (see
environment.rb and requiring dependencies - Space Vatican
for ways where putting it at the bottom of environment.rb can go
wrong).

Fred

+1
thanks Fred :slight_smile:

Please use
rake rails:update

After you update your rails version, you should check your app, the
config file and the plugins.
Most time ,the errors are happening in the config file(config/
environments/…) and the plugins.

On Mar 26, 5:09 am, Bharat R. [email protected]