I'm going into alpha/beta testing phase of my app. I'm pretty excited but also am kinda nervous.
Whenever you launch a product of any kind, it's human nature to second guess yourself and to ask "why am i doing this?" or "Will this work?". Or the big one, am i ready
Well you are never ready, it'll never be good enough, and you missed something. Big. Shit happens. Be a man and move on.
When you mess up your git pull
Remember this chunk of code: sudo git reset --hard HEAD
Use that code snippet when you don't care about the changes on the local machine you are git pulling and your git pull request won't merge.
I just thought i'd post the items that i need to finish before i launch. As i cross each one off of the list, i'll report back on how i tackled each problem. Some answers may take a whole post.
The List
figure out up to 7 day activation period for Accounts. Not a free trial but You have up to 7 days to activate.
add site for sale area.
Completed Ranks. Moderator roles is a feature i'll add later. Add forum roles to forum and make extendible if needed.
add user google adsense code section.
When new plugins are added, I'll need to create an instantiator based on the menu items the user has selected. #how to handle old members based on a new plugin being added? How do other sites handle it?
add body[:url] to mailer based on the current url they are on.
look into using AASM which creates a state for the accounts based on the presence of profile_id and then the current status of the user, as taken from paypal. (Users can cancel a monthly subscription on paypal, i need to know who is doing what)
Some of this shit may not make sense to you, however you will be able to tweek it to your exact situation.
Let the good times roll gents. Rick Okasik and the cars once sang that song about this exact moment in time. The day I transferred my existing ruby on rails site from a shared host to slicehost.
Preamble - Reasons why, etc...
My shared hosting account at a2 has come to an end. They have been having a couple of days worth of outages here and there. Nothing too bad, usual disk failure kinds of stuff, but what really got my goat was this. A bug in cpanel that didn't allow the mongrel server to restart. So my site would be down for an eon, because they restarted the server or apache or something (never got straight answers). Now i'm a patient guy, but in terms of my website as a business, they were messing with my livelyhood. Good intentions or not, it sucked for that reason.
So the time has come to grow up and move to slicehost. I've tried Linode but i prefer slicehost. Both really offer the same principle offerings and are strictly/typically linux based servers, so i liked these two. But for some reason, slicehost resonated more with me. Just a thing i have, no fault of anyones.
Steps involved in transferring an existing app to a new server
I'll be chronicling my journey through transferring a rails app from a shared host to a VPS like slicehost. Here are the steps I took to move the server:
Backed up MySQL database on old server
Ftp'd backup db to new server
Copied app code to new server
Imported DB onto new server
Fixed app settings to let it run properly, such as action mailer, etc.
Updated DNS records to reflect the switch.
For the record, i already have a working passanger/mail system/rails stack on slicehost. I will chronicle what I needed to do to get this to work. However, your mileage may vary and if you screw up anything, even because of my instructions, i'm sorry, but that's on you and i won't and can't be held responsible. You've been warned.
Good, got that crap out of the way, on with the show.
As i'm using the command line for all/most of this transfer, a great resource for zipping files was About.com. Although not as sexy to use, it had all i needed. I used the following commands:
zip -r app_new app -x \*.log
Notice the -x which will exclude your stupidly huge log files. I need to find a better way to manage them.
By the way i went from 40mb zip file with logs to 10.5mb zip file. need i say more
FTP code and .sql file to New Server
No explanation really needed here. I used ftp from old server to my desktop and then i used sftp onto new server at slicehost. Your mileage may vary, but you get the idea.
Unzip code into new /var/sites/ directory
I unzipped the code into a web-applicaton chmod'd directory. unzip app.zip
I ended up creating a new user, just to be safe. Probably no need to do this, as you can keep the same one from your old server, but just in case. I just followed this Slicehost article on creating Mysql users. Grant All privleges, as he shows in the article.
install all your outstanding gems
Since i forgot which gems i need, and I am not ready to upgrade this app to 2.2.2 yet, as it's in rails 2.0.2, I need to go to the old server, and pull off all the gems i used, and reinstall them on the NEW server. Once this is done, we can setup the config files for actionmailer and the db itself.
Well it looks like it's the old rmagick gem that was the troublsome one. Thanks to enrailed.net for helping me out with this one. It's weird to me how i followed the same steps using aptitude and I got an error, but if i use apt-get, i was fine... whatever eh! Oh and gem install rails -v 2.0.2 just hung there, so i said screw it, and i'm going to go with the one i have on there 2.1.2.
Lastly for all UBUNTU Hardy users that don't know.... update your ruby gems. the POS that is shipped with that ubuntu version will disappoint you, if it hasn't already. Thanks to Mike's post here at a fresh cup blog you'll find out how more. Simply put, just run sudo gem install rubygems-update sudo update_rubygems
Update Config and database files
so you'll need to update anything in your config/environment.rb file that was server specific, such as actionmailer settings. Also, make sure your config/database.yml file reflects your NEW database.
Update your server settings
I, like most of the free rails world, are now using passanger to serve our app. If you aren't, run, don't walk, to the nearest passanger downloading station and fricking do it! Mongrel's time has passed, much like zed shaw's rants. It meets my needs, that is for sure.
I added the following code to passanger: ServerName sitename.com ServerAlias www.sitename.com DocumentRoot /var/rails/sitename/public
Since i have two other sites on my slice, i need to make sure that the NameVirtualHost *.80 is only added to the "first" site or in other words, only once.
Change your DNS records on your slice and with your Registrar
You'll need to change where your DNS is pointed, i.e., from the OLD server to the NEW one. Slicehost makes that part easy with their DNS manager. For the registrar part, you need to go to the registrar of record, in order to point it to the new settings. I change the registrar's record first, then i change mine on slicehost. But again, that's what i've done.
Restart the App and you are done
I think that is it friends. You should have the same app as you had before working on a new server. This wasn't rocket-science but it was a good list of 'things you need to do' when converting over to a new server.
To do...
I'll post how i got a multi-website postfix configuration going on my slice. I've yet to find an easy tutorial that works... but i'm looking. Thanks everyone. The good times are rolling again.