Re: Change app root directory or Procfile name using config vars

2012-02-16 Thread Jason Dixon
On Mon, Feb 06, 2012 at 08:01:49AM -0800, Bradley wrote:
> I want to deploy a single codebase to two different Heroku apps.  I'd like 
> one of the apps to launch an API service, which is a small Rack app defined 
> in the same codebase of our much larger web app that uses Rails.
> 
> Ideally, I'd like to set something on the api app to use a different app 
> root (and hence different Procfile) for launching the  API.  This way I can 
> maintain one codebase, but a separate, lightweight API service that still 
> has access to things like models etc...
> 
> Is this possible?  I can't find anything in the docs.
> 
> My only other thought was to define a config variable that is the service 
> to actually launch, then use that in the 
> Procfile, 
> but this seems a bit messy and possibly error prone.  It would be much 
> nicer if I could specify which Procfile to use or change the root directory 
> of the app to launch on a per-app basis.
> 
> I know the Foremen gem allows you to specify different Procfiles and app 
> roots , but does Heroku?

I'm not sure about the different app roots. But the other approach
definitely works. My (working) example:

$ cat config.ru
$LOAD_PATH.unshift File.dirname(__FILE__)

if ENV['APP_NAME'] == 'web'
  require 'web'
  run Foo::Web
else
  require 'api'
  run Foo::API
end

$ cat Procfile 
web: bundle exec rackup -p $PORT 
worker: bundle exec rake queue:work VERBOSE=1 QUEUE=*

-- 
Jason Dixon
DixonGroup Consulting
http://www.dixongroup.net/

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To post to this group, send email to heroku@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.



Re: Change app root directory or Procfile name using config vars

2012-02-06 Thread Bradley
ya I pretty much guessed all of that, just thought I'd see if I could get a 
definitive answer from Heroku.

Thanks for the help!

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/heroku/-/VSpZDf82dTkJ.
To post to this group, send email to heroku@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.



Re: Change app root directory or Procfile name using config vars

2012-02-06 Thread Neil Middleton


On Monday, 6 February 2012 at 20:16, Bradley wrote:

> So potential errors aren't the only concern.  If my API uses different 
> workers/process etc. from the App it becomes a bit onerous to define all 
> these different process types using config vars...
> 

Sure, but remember that Heroku won't scale any of the other processes unless 
you ask it to.  You can easily declare all the other processes in the Procfile 
and scale them as needs be for each deployment of the application (so the names 
would need to be unique), only your web process would need to be configurable. 

For instance

web:  bundle exec $APP
worker_app1: bundle exec blah
worker_app2: bundle exec blah blah

etc
> Definitely don't want to split my code out (yet) if I can get away with it.  
> I wonder if anyone at Heroku can comment on this?  Presumably they have an 
> internal mechanism for finding the Procfile, it would be great if this was 
> configurable. 
If there is it isn't something that they mention in the docs ("Process types 
are declared via a file named Procfile placed in the root of your app.") nor is 
it something that you really have control with with custom build packs (unless 
you want to get /really/ fruity).

-Neil 

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To post to this group, send email to heroku@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.



Re: Change app root directory or Procfile name using config vars

2012-02-06 Thread Bradley
So potential errors aren't the only concern.  If my API uses different 
workers/process etc. from the App it becomes a bit onerous to define all 
these different process types using config vars...

Definitely don't want to split my code out (yet) if I can get away with it. 
 I wonder if anyone at Heroku can comment on this?  Presumably they have an 
internal mechanism for finding the Procfile, it would be great if this was 
configurable. 

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/heroku/-/AVXwtQGDrO0J.
To post to this group, send email to heroku@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.



Re: Change app root directory or Procfile name using config vars

2012-02-06 Thread Neil Middleton
>From what I know of Procfiles, it's routine and reliable to have environment 
>variables available to your Procfile, so I'm not sure that the gist approach 
>you link to is as messy and error-prone as you might think.

If you were to abstract it one layer down so that your rack processes pickup 
which application they're meant to be running, you're still essentially doing 
the same thing, but in a different place.

To be honest, there's probably a billion ways of doing this, all of which have 
some sort of pain.  The approach I've taken in the past is either to have two 
deployable branches which go to different applications on Heroku, or do 
abstract the common code out and share it with two deployable applications.

However, saying this, stipulating the web command in your environment seems a 
fairly reasonable way of tackling this. 

-Neil


On Monday, 6 February 2012 at 16:01, Bradley wrote:

> I want to deploy a single codebase to two different Heroku apps.  I'd like 
> one of the apps to launch an API service, which is a small Rack app defined 
> in the same codebase of our much larger web app that uses Rails.
> 
> Ideally, I'd like to set something on the api app to use a different app root 
> (and hence different Procfile) for launching the  API.  This way I can 
> maintain one codebase, but a separate, lightweight API service that still has 
> access to things like models etc...
> 
> Is this possible?  I can't find anything in the docs.
> 
> My only other thought was to define a config variable that is the service to 
> actually launch, then use that in the Procfile 
> (https://gist.github.com/1752849), but this seems a bit messy and possibly 
> error prone.  It would be much nicer if I could specify which Procfile to use 
> or change the root directory of the app to launch on a per-app basis.
> 
> I know the Foremen gem allows you to specify different Procfiles and app 
> roots (http://ddollar.github.com/foreman/#OPTIONS), but does Heroku? 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Heroku" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/heroku/-/A4tMaN2jXTMJ.
> To post to this group, send email to heroku@googlegroups.com 
> (mailto:heroku@googlegroups.com).
> To unsubscribe from this group, send email to 
> heroku+unsubscr...@googlegroups.com 
> (mailto:heroku+unsubscr...@googlegroups.com).
> For more options, visit this group at 
> http://groups.google.com/group/heroku?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To post to this group, send email to heroku@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.



Change app root directory or Procfile name using config vars

2012-02-06 Thread Bradley
I want to deploy a single codebase to two different Heroku apps.  I'd like 
one of the apps to launch an API service, which is a small Rack app defined 
in the same codebase of our much larger web app that uses Rails.

Ideally, I'd like to set something on the api app to use a different app 
root (and hence different Procfile) for launching the  API.  This way I can 
maintain one codebase, but a separate, lightweight API service that still 
has access to things like models etc...

Is this possible?  I can't find anything in the docs.

My only other thought was to define a config variable that is the service 
to actually launch, then use that in the 
Procfile, 
but this seems a bit messy and possibly error prone.  It would be much 
nicer if I could specify which Procfile to use or change the root directory 
of the app to launch on a per-app basis.

I know the Foremen gem allows you to specify different Procfiles and app 
roots , but does Heroku?

-- 
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/heroku/-/A4tMaN2jXTMJ.
To post to this group, send email to heroku@googlegroups.com.
To unsubscribe from this group, send email to 
heroku+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en.