A week and a half ago, I posted 9 Ways to Use Rails Metal. The fourth way I listed was “Redirecting Affiliate Links.” The basic idea is that you can set up http://mydomain.com/hosting to go to the link you were given by the hosting company you have an affiliate account with.
The first thing I did was set up a model to manage affiliate redirects.
script/generate model affiliate_redirect path:string location:string
Then I ran my migrations, to set up the database.
Then I set up a Rails Metal instance called affiliate_redirects.
script/generate metal affiliate_redirects
From there, programming Rails Metal was pretty simple. You just have to find an AffiliateRedirect with the path visited and redirect to the AffiliateRedirect’s location. Here’s the code:
1
2
3
4
5
6
7
8
9
10
11
12
| require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)
class AffiliateRedirects
def self.call(env)
redirect = AffiliateRedirect.connection.select_all("SELECT * FROM affiliate_redirects WHERE path = '#{env["PATH_INFO"]}'").first
if redirect && (location = redirect["location"])
[302, {"Content-Type" => "text/html", "Location" => location}, ["You are being redirected."]]
else
[404, {"Content-Type" => "text/html"}, ["Not Found"]]
end
end
end |
This is the quick solution to the Rails action with nothing but a redirect_to.
middleware, Rails Metal, redirect, Ruby on Rails, tutorial