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.
rake db:migrate
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:
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.