Search code examples
ruby-on-railsruby-on-rails-3url-routingwebrick

Changing the base URL for Rails 3 development


I know I'm going to deploy to an environment with my application running with a base URL which looks like this:

http://someserver/mydepartment/myapp

My development environment is set up to use the default Rails configuration, which looks like this:

http://localhost:3000/myapp

I'd like to model this deployment path in my development environment. That is, I'd like to develop with a base URL which looks like this:

http://localhost:3000/mydepartment/myapp

That way, I can make all my URLs relative to "/" and they will work in both environments.

How can I change it so my application will live at this path in my development environment?

Solutions I've found, but don't work for me:

  • Setting the scope in routes.rb doesn't seem to work for the static content in public.
  • Using Apache's rewriting capabilities. I don't want to install Apache on my development box. Ideally the solution would work with WEbrick, though I seem to have Mongrel mostly working as well (there are some problems with Mongrel and Ruby 1.9.2).
  • Setting relative_url_root and similar suggestions which don't work with Rails 3.
  • Dynamically generating CSS/JavaScript and adjusting the paths to compensate between development and production environments.

Solution

  • You can try mapping your rails app rack config to a different base_uri. All you need to do is wrap the existing 'run' command in a map block

    try doing this in your rails 'config.ru' file:

    map '/mydepartment' do
        run Myapp::Application
    end
    

    Now when you 'rails server' the app should be at localhost:3000/mydepartment . Not sure if this will give you the desired outcome, but worth a try.