unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
From: Chris Wanstrath <chris@ozmm.org>
To: Eric Wong <normalperson@yhbt.net>
Cc: mongrel-unicorn@rubyforge.org
Subject: Re: Pidfiles and cwd?
Date: Sat, 5 Sep 2009 17:50:17 -0700	[thread overview]
Message-ID: <8b73aaca0909051750h1520fa88ub42bcd4cd3944dbc@mail.gmail.com> (raw)
In-Reply-To: <20090905042806.GA9507@dcvr.yhbt.net>

On Fri, Sep 4, 2009 at 9:28 PM, Eric Wong<normalperson@yhbt.net> wrote:

>> A) Is there a reason `unicorn` allows you to specify the pidfile's
>> location but `unicorn_rails` does not?
>
> `unicorn` was designed to mimic `rackup` in terms of command line
> options and `unicorn_rails` was designed to mimic `script/server` in
> Rails.
>
> I really didn't know what I was doing with the command-line options for
> this, so I decided to steal from others :)
>
> For long-running servers, I'm not a fan of command-line options in
> general because they're easy to forget, so `unicorn` only supports it
> because `rackup` does it (so the embedded CLI options in config.ru can
> be shared).
>
> For `unicorn_rails`, --daemonize already sets a default PID path in
> RAILS_ROOT/tmp/pids/unicorn.pid whereas `script/server` chooses
> RAILS_ROOT/tmp/pids/server.pid.  Since Rails values "convention over
> configuration",  I figured I might as well hard code it...
>
> Additionally, the "-P" parameter used by unicorn_rails and script/server
> is used to set RAILS_RELATIVE_URL_ROOT so it conflicts with the short
> option used by rackup/unicorn.

I'm 100% on board with your reasoning here, but I don't understand why
we can't set the pid in the config file. Am I reading this wrong?
(Very possibly.)

Doesn't this line mean that any `pid` setting in the configurator is ignored:

http://git.bogomips.org/cgit/unicorn.git/tree/lib/unicorn.rb#n83

If so, how would you suggest setting the pid at runtime? I don't mean
to be difficult, we just want to keep everything in /var/run

>> B) Is there a reason `unicorn_rails` must start in the app root and
>> doesn't allow it as a config option?
>
> Since the config file is just Ruby, you can just Dir.chdir inside it.
> And since the chdir is done when the config file is evaluated, the
> chdir can be done across restarts/reloads (you can point it to a
> symlinked directory) to pick up new code/releases.
>
> If you do that, I would initially start Unicorn in "/" or some other
> directory that won't get deleted so you'll be safe for upgrades.
>
> If you managed to forget that, you can set the following in your
> Unicorn config:
>
>  Unicorn::HttpServer::START_CTX[:cwd] = "/"
>
> And then HUP the process before doing the USR2+QUIT to reexec.
> Subsequent Unicorns will always start in "/" and then you can
> Dir.chdir to wherever you run your app.
>
> Hopefully that makes sense, one thing I've been trying to avoid with the
> configuration is having too many ways to do the same thing.

Sounds good to me. Unicorn has quite completely convinced me that
pure-Ruby config files are the way to go. I've already done some crazy
stuff in there during our migration that a YAML file (or whatever)
just wouldn't have been able to handle.

Cheers,

-- 
Chris Wanstrath
http://github.com/defunkt

  parent reply	other threads:[~2009-09-06  0:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <8b73aaca0909042020w73fb03dfpf6c77c85c1c486ad@mail.gmail.com>
2009-09-05  3:21 ` Pidfiles and cwd? Chris Wanstrath
2009-09-05  4:28   ` Eric Wong
2009-09-05 17:15     ` Eric Wong
2009-09-06  0:50     ` Chris Wanstrath [this message]
2009-09-06  1:38       ` Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://yhbt.net/unicorn/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8b73aaca0909051750h1520fa88ub42bcd4cd3944dbc@mail.gmail.com \
    --to=chris@ozmm.org \
    --cc=mongrel-unicorn@rubyforge.org \
    --cc=normalperson@yhbt.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhbt.net/unicorn.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).