Rails 4, subdomain routing

Trying to implement web service in rails through API sub-domain called
“api”.
In my hosts file i added line: 127.0.0.1 api.localhost

In my routes.rb i set sub-domain, where i only need index action and few
manually added restful routes, through following:

namespace :api, path: ‘’, :constraints => {:subdomain => “api”} do
resources :posts, only: :index do
collection do
get ‘popular_by_day’
get ‘popular_by_week’
end
endend

Also generated coresponding controller with: rails g controller
api/posts

Test example:

class Api::PostsController < ApplicationController
def index
@posts = 1

respond_to do |format|
    format.json  { render :json => @posts }
end

end

def popular_by_day
end

def popular_by_week
endend

After rake routes i have following:
popular_by_day_api_posts GET /posts/popular_by_day(.:format)
api/posts#popular_by_day {:subdomain=>“api”}
popular_by_week_api_posts GET /posts/popular_by_week(.:format)
api/posts#popular_by_week {:subdomain=>“api”}
api_posts GET /posts(.:format)
api/posts#index {:subdomain=>“api”}

Far as i know, link to http://api.localhost:3000/posts should work but i
get routing error:
No route matches [GET] “/posts” (Same with /posts.json)

On Nov 20, 2013, at 4:04 AM, Srdjan C. [email protected] wrote:

Far as i know, link to http://api.localhost:3000/posts should work but i get
routing error:
No route matches [GET] “/posts” (Same with /posts.json)

This isnt how localhost works, at all.

If you need to set up a local subdomain for testing, you most likely
will need to do things like modify your /etc/hosts table, set up local
DNS resolvers, and the like. If youre running on a mac, you can use pow,
which makes all that dead-easy.

On 2013-Nov-21, at 04:12 , Tamara T. [email protected]
wrote:

On Nov 20, 2013, at 4:04 AM, Srdjan C. [email protected] wrote:

Far as i know, link to http://api.localhost:3000/posts should work but i get
routing error:
No route matches [GET] “/posts” (Same with /posts.json)

This isnt how localhost works, at all.

If you need to set up a local subdomain for testing, you most likely will need
to do things like modify your /etc/hosts table, set up local DNS resolvers, and
the like. If youre running on a mac, you can use pow, which makes all that
dead-easy.

But you could use:
http://api.127.0.0.1.xip.io:3000/posts

See http://xip.io/ for the details, but this will resolve to the IP
address before the .xip.io and then api will be the subdomain.

-Rob

On Nov 21, 2013, at 5:37 AM, Rob B. [email protected]
wrote:

If you need to set up a local subdomain for testing, you most likely will need
to do things like modify your /etc/hosts table, set up local DNS resolvers, and
the like. If youre running on a mac, you can use pow, which makes all that
dead-easy.

But you could use:
http://api.127.0.0.1.xip.io:3000/posts

See http://xip.io/ for the details, but this will resolve to the IP address
before the .xip.io and then api will be the subdomain.

-Rob

+++Rob. I didnt know about xip.io, thanks!