undefined method `gem' for main:Object after rake rails:freeze:gems

Help! I'm kinda stuck...I'm pretty sure that I somehow need to 'freeze' RubyGem itself (aka gem) although given the error below, I'm not sure. I can't downgrade & freeze to the rails version on the host since my app depends on some Rails2x stuff.

If indeed I need to 'freeze' gem', is there standard way to do this? or any idea as to what exactly I'd need to do (i.e. how do I get my app to "see" the correct 'gem' command).

The reason I ask is because I'm getting this error message spewing myHostDir/httpdocs/newsite/app/vendor/rails/activerecord/lib/../../ activesupport/lib/active_support/vendor.rb:5:        undefined method `gem' for main:Object (NoMethodError)   from /httpdocs/newsite/app/vendor/rails/activerecord/lib/../../ activesupport/lib/active_support.rb:26:in `require'   from /httpdocs/newsite/app/vendor/rails/activerecord/lib/../../ activesupport/lib/active_support.rb:26   from /httpdocs/newsite/app/vendor/rails/activerecord/lib/    active_record.rb:31:in `require'   from /httpdocs/newsite/app/vendor/rails/activerecord/lib/ active_record.rb:31   from ./../config/../vendor/rails/railties/lib/initializer.rb:156:in `require'   from ./../config/../vendor/rails/railties/lib/initializer.rb:156:in `require_frameworks'   from ./../config/../vendor/rails/railties/lib/initializer.rb:156:in `each'   from ./../config/../vendor/rails/railties/lib/initializer.rb:156:in `require_frameworks'   from ./../config/../vendor/rails/railties/lib/initializer.rb:88:in `process'   from ./../config/../vendor/rails/railties/lib/initializer.rb:49:in `send'   from ./../config/../vendor/rails/railties/lib/initializer.rb:49:in `run'   from ./../config/environment.rb:13   from dispatch.cgi:3:in `require'   from dispatch.cgi:3 [date] [error] [client <ipaddr>] Premature end of script headers: / httpdocs/newsite/app/public/dispatch.cgi

Of course the app gives: Application error Rails application failed to start properly"

The app is running fine on my development box with InstantRails 2.x specifically:       rails: 2.0.2       gem: 1.0.1       ruby: 1.8.6 patchlevel 111 Unfortunately my host is running rails 1.1.2, and I don't have shell access so this is all the info I've got there:       rails: 1.1.2       gem: ???        ruby: 1.8.4

Or am I totally stuck & have to see if they'll upgrade ruby on the host? Thanks, Dale

I should mention that the development box is winXP with instantRails 2.

Help! I'm kinda stuck...I'm pretty sure that I somehow need to 'freeze' RubyGem itself (aka gem) although given the error below, I'm not sure. I can't downgrade & freeze to the rails version on the host since my app depends on some Rails2x stuff.

If indeed I need to 'freeze' gem', is there standard way to do this? or any idea as to what exactly I'd need to do (i.e. how do I get my app to "see" the correct 'gem' command).

That could be the case: the require_gem method was replaced by gem in
newer versions of ruby gems. (ie the problem here isn't the gem
command itself but the gem library. You should be able to convince ruby to load the gem library from
somewhere else (either via the -I option or via fiddling with $LOAD_PATH

Fred

Fred, so if I understand this correctly I need to find my development box's gem path and bulk upload that to the server in something like: myHostDir/gems

Then modify my dispatch.* stuff to use "/usr/bin/ruby -I myHostDir/ gems"

Have I got that right?

Thanks again, Dale

I tried a bunch of things...none of which worked. Fortunately the hosting provider was willing to upgrade to the latest ruby & gems. Which works great now! The downside is I'll never probably know quite how to 'freeze' the gem command into the application.

For the curious, here's what I tried: ran the follwing in my app/vendor/gems directory:    gem unpack rubygems-update Then re-transferred the entire app to the host, trying several things (none of these worked):

- modifying environment.rb to include (also tried without the /bin at the end) ENV['GEM_PATH'] = File.dirname(__FILE__)+'../vendor/gems/rubygems- update-1.0.1/bin'

- modifying the config.load_path in the environment.rb trying each of the following with & without /bin) # config.load_paths += %W( #{RAILS_ROOT}/vendor/gems/rubygems- update-1.0.1/bin ) # config.load_paths += "#{File.dirname(__FILE__)}/../vendor/gems/ rubygems-update-1.0.1/bin"

- modifying the dispatch.cgi "shebang" to: #!/usr/bin/ruby -I ../vendor/gems/rubygems-update-1.0.1/bin

- I tried the gemsonrails gem, but couldn't get it to work with my custom rake deploy (all deploy does is copy app files to a directory I use to then ftp to the host)

So in summary, what worked....upgrade ruby & the gems on the server. -Dale

In case anyone ends up back here...my server reverted to the old rails gems. So I had to solve this problem for 'real' Here's a link to how I did it: http://www.godale.org/blog/2008/04/freezing-rubygems-on-shared-server.html

-Dale