OK ROROers, here's the update:

Adding a line like:

  config.action_mailer.default_url_options = { :host => 'foo.com/bar' }

to config/environments/<environment_name>.rb  WILL properly generate urls in
my mailers like http://foo.com/bar/sign_in  as we all suspected.

BUT, as I suspected, this is only a coincidentally workable solution
because, if you add the :port option to the config, like this:

  config.action_mailer.default_url_options = { :host => 'foo.com/bar', :port
=> 8080 }

then you get urls like http://foo.com/bar:8080/sign_in   which is, of
course, totally not right.

So, I'm lucky that I don't need to specify a port, because the former option
above will coincidentally work for me in my case, but it feels like a
brittle half-solution in light of the port issue.  My guess is that I'd need
to monkey patch url_for to accept a :subdomain option, and pass that in when
I call #sign_in_url in my mailer code.

Anyone else have any thoughts to add?
-g


On Thu, Feb 17, 2011 at 5:07 PM, Gabe Hollombe <[email protected]> wrote:

> Thanks folks,
>
> I haven't tried something
> like config.action_mailer.default_url_options{:host => "foo.com/bar"}  yet
> because, while it _might_ work for my specific situation, it feels hacky
> because :port is a valid option for url_for and I don't think passing in a
> string with a sub directory for the :host option makes a lot of sense
> because my guess is that, combined with port, you'd end up with
> http://foo.com/bar:8080/sign_in, for example.  Note, I haven't tried this
> yet, and it might work, but I just thought I'd poll the community first in
> case I was missing something super obvious.
>
> I'll give the :host => 'foo.com/bar' default_url_options attempt a go and
> see how it works, and I might even test my :port hunch even though I don't
> _need_ a non-standard port right now.
>
> -g
>
> On Thu, Feb 17, 2011 at 4:52 PM, Stuart Coyle <[email protected]>wrote:
>
>> From the ActionMailer documentation:
>>
>> "URLs can be generated in mailer views using url_for or named routes.
>> Unlike controllers from Action Pack, the mailer instance doesn’t have any
>> context about the incoming request, so you’ll need to provide all of the
>> details needed to generate a URL."
>>
>> Have you tried this?
>>
>> config.action_mailer.default_url_options{:host => "foo.com/bar"}
>>
>>
>> On Thu, Feb 17, 2011 at 3:32 PM, Gabe Hollombe <[email protected]>wrote:
>>
>>> Hey all,
>>>
>>> I've got a Rails 3 app.  Let's say I'm deploying it to
>>> http://foo.com/bar.  In a mailer, I want to use sign_in_url (sign_in is
>>> a named route) to get a url like http://foo.com/bar/sign_in.  Alas, in
>>> the context of my mailer, Rails has no idea about the fact that this app is
>>> deployed to a subdirectory.  So, what's the right way to get the proper url
>>> with the deployed subdirectory, from the named route url helper?  I thought
>>> setting   ENV['RAILS_RELATIVE_URL_ROOT'] = '/bar'  would work, but it
>>> doesn't seem to get looked at when my mailer is generating the url with the
>>> named route helper.
>>>
>>> Any thoughts?  I'm sure I'm missing something obvious here, but I clearly
>>> don't know what it is.
>>>
>>> -g
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Ruby or Rails Oceania" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/rails-oceania?hl=en.
>>>
>>
>>
>>
>> --
>> Stuart Coyle
>> stuart dot coyle at gmail dot com
>>
>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Ruby or Rails Oceania" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/rails-oceania?hl=en.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
or Rails Oceania" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rails-oceania?hl=en.

Reply via email to