Thank you so much for prompt and useful explanation.


On Saturday, September 22, 2012 3:42:32 AM UTC-7, Magnus Holm wrote:
No, but this is what middleware are for:

class ApplicationChooser
  def initialize(apps)
    @apps = apps
  end

  def call(env)
    @apps.each do |proc, app|
      return app.call(env) if proc.call(env)
    end
end

run ApplicationChooser.new(
  proc { |env| env["SERVER_NAME"] == "example.com" } => App1,
  proc { |env| env["QUERY_STRING"] == "admin" } => App2,
  proc { |env| true } => Default
)

// Magnus Holm


On Sat, Sep 22, 2012 at 12:32 PM, Arman <arm...@gmail.com> wrote:
> Thanks for the quick answer. This definitely works.
>
> Our of curiosity, is it possible to see the host and other request
> information in config.ru?
>
> On Sep 22, 2012 3:04 AM, "Magnus Holm" <jud...@gmail.com> wrote:
>>
>> It's already supported, you just need the trailing slash:
>>
>> map 'http://example1.com/' do
>>   run MyApp::Example1
>> end
>>
>> // Magnus Holm
>>
>>
>> On Sat, Sep 22, 2012 at 11:58 AM, armanx <arm...@gmail.com> wrote:
>> > Is it possible to detect the incoming request's domain name (host) in
>> > config.ru? I'm trying to use URLMap to map different domains to
>> > different
>> > apps, all running on the same IP. Theoretically, I'm trying to achieve
>> > this
>> > effect:
>> >
>> >> map 'http://example1.com' do
>> >> run MyApp::Example1
>> >> end
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> map 'http://example2.com' do
>> >> run MyApp::Example2
>> >> end
>> >
>> >
>> >
>> > For example, if it was possible to read rack's SERVER_NAME in config.ru,
>> > I
>> > would do something like:
>> >
>> >> if SERVER_NAME == 'example1.com'
>> >> map '/' do
>> >> run MyApp::Example1
>> >> end
>> >> end
>> >
>> >