Yet another new store

I wasn't quite happy with my online store and was pleased to see a clean, open source store released. Andy Kim of Potion Factory released his store as open source. It's Ruby on Rails, so it was a learning experience for me to get it running again. I learned a great deal in the 2+ days that I spent getting it running, but it is so much cleaner than my old stores. Hopefully I don't have any problems with it as I just put the finishing touches on it this morning. It's at store.receiptwallet.com. Things I learned from installing this on my server:

  • Even though there is an RPM for mod_fcgid on Fedora Core 5 with Apache2, FastCGI still needs to be installed from the source
  • The Apache configuration for FastCGI needs to have:
        DefaultInitEnv RAILS_ENV production
        SetEnv RAILS_ENV production
    

    in it. The first line for FastCGI to work and the second to work without FastCGI

  • ruby-debug gem has to be installed to get the store to work in development mode and MUST be commented out to work under Apache
  • To use multiple databases in RoR, the model has to look something like:
    class User < ActiveRecord::Base
      require 'yaml'
      set_table_name "users" # we need to set this explicitly
      extra_coord = YAML.load(File.open(File.join(RAILS_ROOT,"config/database.yml"),"r"))["userdatabase"]
      self.establish_connection(extra_coord)
    end
    

    (my pool of serial numbers is stored in a separate database and so are my users; I modified the store to interact with these other databases)

  • On PayPal's developer site, if you want to test Website Payments Pro, you need to use a Social Security Number of 111xxxxxx where x is any number, but this number can't be used by another developer
  • STDERR.puts is your friend. It's great for logging stuff to the console
  • RoR running under Apache must use FastCGI in a production environment or it is way too slow
  • In application.rb, it MUST have:
    class ApplicationController < ActionController::Base
    	filter_parameter_logging "cc_number|cc_code|cc_month|cc_year"
    end
    

    otherwise you have important stuff getting logged which is bad.

  • Turn off IPN on PayPal or you'll have an error when processing orders and people will order multiple times because they think it fails

That's about it for now. I'll update this as I remember more stuff so that I don't waste time in the future and it may help others.

Thanks, Andy, for the store! While I don't have a use for your products right now, I'll be purchasing them anyway as your store is such an elegant solution, it is the least I can do to repay you.