Hi Gabe

It's worth noting that setting the default host - with or without a 
subdirectory - is brittle anyway. If you don't specify a port there, it will 
never come into play in your email URLs, and if you did want a custom port, 
just stick it in the middle of the host value: foo.com:8080/bar.

That said, it does feel quite ugly - but not sure there's a better way forward.

-- 
Pat

On 18/02/2011, at 9:47 AM, Gabe Hollombe wrote:

> 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.

-- 
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