unicorn 1.1.2 runs fine under my system ruby, but when trying to run it using rvm, I get: % rvm use 1.8.7 info: Using ruby 1.8.7 p299 % unicorn /home/joe/.rvm/gems/ruby-1.8.7-p299/gems/unicorn-1.1.2/lib/unicorn/configurator.rb:494:in `eval'': undefined local variable or method `host'' for main:Object (NameError) line 494 looks like: # XXX ugly as hell, WILL FIX in 2.x (along with Rainbows!/Zbatery) host, port, set_listener, options, daemonize eval("[ host, port, set_listener, options, daemonize ]", TOPLEVEL_BINDING) any ideas why it would have a problem when running under rvm? thanks, -joe
Joseph McDonald <superjoe at gmail.com> wrote:> unicorn 1.1.2 runs fine under my system ruby, but when trying to run > it using rvm, I get: > > > % rvm use 1.8.7 > info: Using ruby 1.8.7 p299 > > % unicorn > /home/joe/.rvm/gems/ruby-1.8.7-p299/gems/unicorn-1.1.2/lib/unicorn/configurator.rb:494:in > `eval'': undefined local variable or method `host'' for main:Object > (NameError)Hi Joseph, Is there any chance you have an older "unicorn" executable script somewhere that gets exposed rvm switches the environment on you? That''s the only thing I can think of right now.> line 494 looks like: > > # XXX ugly as hell, WILL FIX in 2.x (along with Rainbows!/Zbatery)Yes, I still need to work on 2.x and clean up a lot of the ugly internal API bits :) -- Eric Wong P.S.: At least nowadays I''m (finally) getting some experience developing/supporting applications using Unicorn and Rainbows! (or Zbatery). Things like e4d0b226391948ef433f1d0135814315e4c48535 in unicorn.git are a direct result of that.
Thanks Eric, see below: On Mon, Aug 16, 2010 at 8:52 PM, Eric Wong <normalperson at yhbt.net> wrote:> Joseph McDonald <superjoe at gmail.com> wrote: >> unicorn 1.1.2 runs fine under my system ruby, but when trying to run >> it using rvm, I get: >> >> >> % rvm use 1.8.7 >> info: Using ruby 1.8.7 p299 >> >> % unicorn >> /home/joe/.rvm/gems/ruby-1.8.7-p299/gems/unicorn-1.1.2/lib/unicorn/configurator.rb:494:in >> `eval'': undefined local variable or method `host'' for main:Object >> (NameError) > > Hi Joseph, > > Is there any chance you have an older "unicorn" executable script > somewhere that gets exposed rvm switches the environment on you? ?That''s > the only thing I can think of right now.I''m sure I''m running the right version of unicorn. what''s weird is if I remove the reference to TOPLEVEL_BINDING, it works, i.e.: host, port, set_listener, options, daemonize eval("[ host, port, set_listener, options, daemonize ]") works, it gets the right port from the config.ru file. my config.ru file looks like" #\ -w -p 4452 require ''./mystuff'' run Sinatra::Application another strange thing: I need to add the "./" in front of mystuff, but when i''m not using rvm (rvm use system), I don''t need to do that. I''m curious if anyone else is using unicorn with rvm and not having this problem. I''m guessing it''s something weird with my system, but not sure. thanks, -joe> >> line 494 looks like: >> >> ?# XXX ugly as hell, WILL FIX in 2.x (along with Rainbows!/Zbatery) > > Yes, I still need to work on 2.x and clean up a lot of the > ugly internal API bits :) > > > -- > Eric Wong > > P.S.: At least nowadays I''m (finally) getting some experience > developing/supporting applications using Unicorn and Rainbows! (or > Zbatery). ?Things like e4d0b226391948ef433f1d0135814315e4c48535 in > unicorn.git are a direct result of that. >
Joseph McDonald <superjoe at gmail.com> wrote:> I''m sure I''m running the right version of unicorn. > what''s weird is if I remove the reference to TOPLEVEL_BINDING, it works, i.e.: > > host, port, set_listener, options, daemonize > eval("[ host, port, set_listener, options, daemonize ]") > > works, it gets the right port from the config.ru file.Hm... I''m stumped. However, you''re really encouraging me to pause other projects, work on 2.0 and release it this week/weekend :) I suppose some of the crazier 2.0 stuff I proposed can wait until 3.x.> my config.ru file looks like" > #\ -w -p 4452 > require ''./mystuff'' > run Sinatra::Application > > another strange thing: I need to add the "./" in front of mystuff, > but when i''m not using rvm (rvm use system), I don''t need to do that.Odd... needing the ''./'' feels like it''s using Ruby 1.9.2 or later... Can you print out RUBY_VERSION in there to be certain? I just tried rvm for the first time with a fresh user/home directory on my system and everything works as expected with 1.8.7 (it just picked p302, not p299, but that shouldn''t make a difference...).> I''m curious if anyone else is using unicorn with rvm and not having > this problem. I''m guessing it''s something weird with my system, but > not sure.If you have root on your machine, just try creating a new user and start with a blank $HOME. I often do that to narrow things down when debugging/testing code and don''t feel like going all the way with chroot or VM. -- Eric Wong
I added TOPLEVEL_BINDING = binding to gems/unicorn-1.1.2/bin/unicorn and it seemed to fix it: #!/this/will/be/overwritten/or/wrapped/anyways/do/not/worry/ruby # -*- encoding: binary -*- require ''unicorn/launcher'' require ''optparse'' # !!!!!!!!! added the line below: TOPLEVEL_BINDING = binding ENV["RACK_ENV"] ||= "development" I still have no idea why I need to do that. thanks, -joe On Mon, Aug 16, 2010 at 8:52 PM, Eric Wong <normalperson at yhbt.net> wrote:> Joseph McDonald <superjoe at gmail.com> wrote: >> unicorn 1.1.2 runs fine under my system ruby, but when trying to run >> it using rvm, I get: >> >> >> % rvm use 1.8.7 >> info: Using ruby 1.8.7 p299 >> >> % unicorn >> /home/joe/.rvm/gems/ruby-1.8.7-p299/gems/unicorn-1.1.2/lib/unicorn/configurator.rb:494:in >> `eval'': undefined local variable or method `host'' for main:Object >> (NameError) > > Hi Joseph, > > Is there any chance you have an older "unicorn" executable script > somewhere that gets exposed rvm switches the environment on you? ?That''s > the only thing I can think of right now. > >> line 494 looks like: >> >> ?# XXX ugly as hell, WILL FIX in 2.x (along with Rainbows!/Zbatery) > > Yes, I still need to work on 2.x and clean up a lot of the > ugly internal API bits :) > > > -- > Eric Wong > > P.S.: At least nowadays I''m (finally) getting some experience > developing/supporting applications using Unicorn and Rainbows! (or > Zbatery). ?Things like e4d0b226391948ef433f1d0135814315e4c48535 in > unicorn.git are a direct result of that. >