Switched to OSX

I’m porting my app from a linux machine to OSX:

  1. Seems like when I ctrl-C on the mac using webrick, and then
    restarting I get “address already in use” - I’ve killed every process
    I’ve seen, including doing a ‘sudo ps’… I really don’t want to do a
    -p to get out of this. How can I release the port? Seems like a lot of
    processes are getting filtered out on the mac.
  2. I’m not finding the config method in Login Engine, which tells me
    Login Engine is not getting loaded. I’ve replaced my public directory
    with the mac generated version, are there any other suggestions?

On Nov 5, 2006, at 12:21 AM, Joe wrote:

  1. Seems like when I ctrl-C on the mac using webrick, and then
    restarting I get “address already in use” - I’ve killed every process
    I’ve seen, including doing a ‘sudo ps’… I really don’t want to do a
    -p to get out of this. How can I release the port? Seems like a lot of
    processes are getting filtered out on the mac.

Releasing the port is not in your control. The process should to do
it before it dies.

Are you running in production mode? Could it be a buggy version of
webrick?

I never had this problem with webrick or lighttpd. You might try
ligttpd.

Jose


Jose Hales-Garcia
UCLA Department of Statistics
[email protected]

Or mongrel. It’s good enough that rails-edge uses it by default (if
it’s installed)

gem install mongrel
mongrel_rails start

You can try netstat -a and see if the port is being used by the
process. BSD’s sockstat (which you can get via darwinports) is also a
good call here.

Vish

Ok, I tried switching to lighty, and I get:

$ ./script/server
=> Booting lighttpd (use ‘script/server webrick’ to force WEBrick)
=> Rails application started on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server (see config/lighttpd.conf for options)
2006-11-05 08:11:59: (network.c.300) can’t bind to port: 0.0.0.0 3000
Address already in use
Exiting

Webrick now fails with the error from Login Engine:
./script/server webrick
=> Booting WEBrick…
./script/…/config/…/config/environment.rb:56: undefined method
config' for LoginEngine:Module (NoMethodError) from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in require’

Maybe the real problem is the LoginEngine not being loaded? I see on
the web most of these solutions are restarting the server after
modifying environment.rb, but obviously that’s not the case here.

On Nov 5, 2006, at 6:45 AM, Vishnu G. wrote:

Or mongrel. It’s good enough that rails-edge uses it by default (if
it’s installed)

gem install mongrel
mongrel_rails start

That’s easy enough. I haven’t made the transition to Mongrel yet,
but I should be doing it sooner than later. Can you say what caveats
there are in transitioning a project from Lighttpd to Mongrel? I’ve
configured the lighttpd.conf file how I want it. Are there
transition guides?

By the way, Lighttpd is used over Webrick when it’s installed too.

Jose


Jose Hales-Garcia
UCLA Department of Statistics
[email protected]

On Nov 5, 2006, at 8:16 AM, Joe wrote:

$ ./script/server
=> Booting lighttpd (use ‘script/server webrick’ to force WEBrick)
=> Rails application started on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server (see config/lighttpd.conf for options)
2006-11-05 08:11:59: (network.c.300) can’t bind to port: 0.0.0.0 3000
Address already in use

You need to clear out the stuck process first. Did you reboot
first? The point is, if your socket is clear to start with, and you
use another server, you should be able to quit them and not get this
problem again.

Jose


Jose Hales-Garcia
UCLA Department of Statistics
[email protected]

The reboot did clear out the port connection. I’m going to keep looking
into netstat, hopefully I can determine how to find the process that is
holding the port hostage. I’d rather not reboot when I have this issue.
If I find anything I’ll update the thread, netstat had a lot of
information.

I’ve nailed down the core issue to links - when the directories script,
config and public are links instead of directories, I see the config
method not found in LoginEngine. I was using links for those
directories because I want my synchronizer to avoid syncing them to the
server.

Why would rails care if I’m using links? Seems like it’s detecting all
the directories, but not loading the plugins.

$ ls …/…
config <design_dir> public script
$ rm -rf public config script
$ ln -s …/…/public public
$ ln -s …/…/config config
$ ln -s …/…/script script
$ ./script/server webrick
=> Booting WEBrick…
./script/…/config/…/config/environment.rb:56: undefined method
config' for LoginEngine:Module (NoMethodError) from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in require’
from
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in
require' from /usr/local/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/servers/webrick.rb:52 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in require’
from
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in
require' from /usr/local/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/commands/server.rb:30 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in require’
from
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in
`require’
from ./script/server:3
$ rm public config script
$ cp -rf …/…/public .
$ cp -rf …/…/config .
$ cp -rf …/…/script .
$ ./script/server webrick
=> Booting WEBrick…
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2006-11-05 10:28:23] INFO WEBrick 1.3.1
[2006-11-05 10:28:23] INFO ruby 1.8.4 (2005-12-24) [i686-darwin8.8.2]
[2006-11-05 10:28:23] INFO WEBrick::HTTPServer#start: pid=711 port=3000

On Nov 5, 2006, at 8:41 AM, Jose Hales-Garcia wrote:

You need to clear out the stuck process first. Did you reboot first?

Actually rebooting isn’t necessary just to test this. You can set
the port in the lighttpd.conf file with…

server.port = 3003

Jose


Jose Hales-Garcia
UCLA Department of Statistics
[email protected]

On the dev environment? None at all. The production set up involves a
different architecture, and you’ll probably still want lighty as your
front server. mongrel.rubyforge.org has excellent guides for
deployment. Developing (on Windows esp, Ruby is slow) with Mongrel is
way faster.

Vish