Peter Hanning
2007-Aug-04 21:32 UTC
Mysterious TextMate/Edge Rails/open_id_authentication error
Rails Experts, I have run into an interesting problem with TextMate, its Rails bundle, Edge Rails and the open_id_authentication plugin. When I have these components installed, the "Call Generate Script" command stops working in TextMate, giving only a blank dialog in response to model creation requests. I have a setup like Robby ( http://www.robbyonrails.com/articles/2007/06/19/installing-ruby-on-rails-and-postgresql-on-os-x-second-edition) but with mysql rather than postgresql. Below is a log of how I''ve managed to reproduce the issue from scratch in a terminal window without TextMate involvement, while still mimicking what TextMate is doing. First, I check out edge rails and create a rails project using edge rails'' rails command, then check out edge rails into vendor/rails. In order to make the example short, I bypass creating databases and I comment out a statement in environment.rb that would otherwise give an error and distract from what I''m trying to show. Then I set the RUBYLIB environment variable to the same value as what TextMate sets it to by prepending and appending the same paths as TextMate does when running the "Call Generate Script" from the Rails bundle. The "about" script is giving the same error as the "generate" script so I''ve used it in my example for simplicity''s sake. After checking out the latest revision of the open_id_authentication plugin I run the "about" script again and BOOM! there''s an error. After much debugging I found that by simply moving the redcloth.rb file from the Rails bundle out of the way, everything starts working again. I then move the file back again and go on to show that the issue was introduced in edge rails revision 6833. Finally, I set the RUBYLIB environment variable back to its original value and run the "about" script successfully. Now, what is puzzling to me is that the changes in revision 6833 and having the redcloth.rb file in the RUBYLIB path seem to be irrelevant to what I am trying to do, which is to run the "about" and "generate" scripts. I suppose there is some class loading issue going on here. For what it''s worth, I have also tried updating to the latest TextMate Support and Rails bundles via svn, but with the same end result. For now, I have just renamed the redcloth.rb file in the Rails bundle and I''m able to use the "generate" command from within TextMate. I suppose I could also just use the "generate" command from a terminal window, but I like that less because of its minor productivity loss. Is there a TextMate/Rails expert out there who can tell where the issue should be fixed (Rails bundle, or Edge Rails?) and what is really causing the issue? Peter $ env | grep RUBYLIB RUBYLIB=/opt/local/lib/ruby/site_ruby/1.8:/opt/local/lib/ruby/1.8 $ export ORIGINAL_RUBYLIB=$RUBYLIB $ ruby -v ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.10.1] $ rails -v Rails 1.2.3 $ gem -v 0.9.4 $ rake --version rake, version 0.7.3 $ svn co http://svn.rubyonrails.org/rails/trunk rails ... $ ruby rails/railties/bin/rails test ... $ rm -rf rails $ cd test comment out the following in config/environment.rb: # config.action_controller.session = { # :session_key => ''_test_session'', # :secret => ''41acd5825f0415b50cb6d70ca041e393'' # } $ export RUBYLIB=/Applications/TextMate.app/Contents/SharedSupport/Bundles/Rails.tmbundle/Support/lib:$RUBYLIB:/Applications/TextMate.app/Contents/SharedSupport/Support/lib $ svn co http://svn.rubyonrails.org/rails/trunk vendor/rails ... $ script/about About your application''s environment Ruby version 1.8.6 (i686-darwin8.10.1) RubyGems version 0.9.4 Rails version 1.2.3 Active Record version 1.15.3 Action Pack version 1.13.3 Action Web Service version 1.2.3 Action Mailer version 1.3.3 Active Support version 1.4.2 Edge Rails revision 7271 Application root /Users/cph/work/test Environment development Database adapter mysql $ svn co http://svn.rubyonrails.org/rails/plugins/open_id_authenticationvendor/plugins/open_id_authentication ... $ script/about /Users/cph/work/test/vendor/plugins/open_id_authentication/init.rb:5:in `evaluate'': undefined method `gem'' for #<Rails::Plugin::Loader:0x251cf50> (NoMethodError) from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:107:in `evaluate'' from /Users/cph/work/test/vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:107:in `evaluate'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:24:in `load'' from ./script/../config/../vendor/rails/railties/lib/initializer.rb:183:in `load_plugins'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/locator.rb:16:in `each'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/locator.rb:16:in `each'' from ./script/../config/../vendor/rails/railties/lib/initializer.rb:182:in `load_plugins'' ... 6 levels... from /Users/cph/work/test/vendor/rails/railties/lib/commands/about.rb:1:in `require'' from /Users/cph/work/test/vendor/rails/railties/lib/commands/about.rb:1 from script/about:3:in `require'' from script/about:3 $ mv /Applications/TextMate.app/Contents/SharedSupport/Support/lib/redcloth.rb /Applications/TextMate.app/Contents/SharedSupport/Support/lib/redcloth.rb.bak $ script/about About your application''s environment Ruby version 1.8.6 (i686-darwin8.10.1) RubyGems version 0.9.4 Rails version 1.2.3 Active Record version 1.15.3 Action Pack version 1.13.3 Action Web Service version 1.2.3 Active Resource version 0.9.0 Action Mailer version 1.3.3 Active Support version 1.4.2 Edge Rails revision 7271 Application root /Users/cph/work/test Environment development Database adapter mysql $ mv /Applications/TextMate.app/Contents/SharedSupport/Support/lib/redcloth.rb.bak /Applications/TextMate.app/Contents/SharedSupport/Support/lib/redcloth.rb $ svn up -r6832 vendor/rails ... $ script/about About your application''s environment Ruby version 1.8.6 (i686-darwin8.10.1) RubyGems version 0.9.4 Rails version 1.2.3 Active Record version 1.15.3 Action Pack version 1.13.3 Action Web Service version 1.2.3 Action Mailer version 1.3.3 Active Support version 1.4.2 Edge Rails revision 6832 Application root /Users/cph/work/test Environment development Database adapter mysql $ svn up -r6833 vendor/rails ... $ script/about /Users/cph/work/test/vendor/plugins/open_id_authentication/init.rb:5:in `evaluate'': undefined method `gem'' for #<Rails::Plugin::Loader:0x2535d20> (NoMethodError) from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:107:in `evaluate'' from /Users/cph/work/test/vendor/rails/activerecord/lib/../../activesupport/lib/active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:107:in `evaluate'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:24:in `load'' from ./script/../config/../vendor/rails/railties/lib/initializer.rb:193:in `load_plugins'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/locator.rb:16:in `each'' from ./script/../config/../vendor/rails/railties/lib/rails/plugin/locator.rb:16:in `each'' from ./script/../config/../vendor/rails/railties/lib/initializer.rb:192:in `load_plugins'' ... 6 levels... from /Users/cph/work/test/vendor/rails/railties/lib/commands/about.rb:1:in `require'' from /Users/cph/work/test/vendor/rails/railties/lib/commands/about.rb:1 from script/about:3:in `require'' from script/about:3 $ export RUBYLIB=$ORIGINAL_RUBYLIB $ script/about About your application''s environment Ruby version 1.8.6 (i686-darwin8.10.1) RubyGems version 0.9.4 Rails version 1.2.3 Active Record version 1.15.3 Action Pack version 1.13.3 Action Web Service version 1.2.3 Action Mailer version 1.3.3 Active Support version 1.4.2 Edge Rails revision 6833 Application root /Users/cph/work/test Environment development Database adapter mysql --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---