Tag: Rails3

ERR unknown command blpop for Resque, Redis and Rails

Recently I've created a simple "like" Pingdom app, that helps me monitor my deployed projects. Problems started, when I wanted to deploy this app, on a server where Redis is already working. When I've been starting resque workers, they've been throwing me same error:

rake aborted!
ERR unknown command 'blpop' 

I figured out, that my Redis instance was not up2date. however it was the most recent in repos. How to fix this? We need to add rwky/redis to our repos list:

sudo add-apt-repository ppa:rwky/redis
sudo apt-get update
sudo apt-get install redis-server

and thats all. After this, Resque works like a charm!

Rails routes: limiting access to application parts from certain domains (hosts)

Sometimes we want to handle different parts of a single application from different domains. A good example of such an approach is when we have a scope containing our API. Wouldn't it be great if it could be served from a different domain than the rest of the application? Of course yes! Approach like this (separating the API from the rest of the app) is used in several popular web applications. For example in Twitter. The app is under twitter.com and the API lies under the api.twitter.com url. When you have a smaller Rails app, probably you maintain the API-part and the user-part in one Rails project. The separate domains approach allows you to easily move to the two different apps, when the time comes.

So, how to limit access to the app parts based on the domain? Let's use constraints. Let's assume, that we have a scope called :api and the scope called :ui. Each scope represents a module in our app:

scope :module => :api do
  # Some resources and additional routes here
  # Api::SomeController...
end

scope :module => :ui do
  # Some resources and additional routes here
  # Ui::SomeController...
end

To make it domain-accessible we just need to wrap it with a block like this one:

constraints(:host => 'my_domain') do
# Routes here
end

where the my_domain is a domain that should be used with our app part. So for the example above, it would look like this:

constraints(:host => 'api.example.com') do
  scope :module => :api do
    # Some resources and additional routes here
    # Api::SomeController...
  end
end

constraints(:host => 'my.app.example.com') do
  scope :module => :ui do
    # Some resources and additional routes here
    # Ui::SomeController...
  end
end

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑