I am familiar with using RoR in a pure development environment, that is
to say that I can create a local project, access it via a web browser,
update the database, etc. However, I’m having trouble figuring out how
to best set up things with actual deployment in mind. Forgive me if this
has been asked before, I couldn’t find it easily.
Right now I have a subversion repository set up for source control, and
I manually FTP the trunk over to the production site when I feel like it
or when it needs it. However, as a user base is developed and I may need
to upgrade the database, I have nothing set up for database stuff.
Honestly, I’m somewhat new to source control, so have never had to think
of database upgrades as a series of smaller changes. Is the best route
for this to set up any neccessary SQL scripts to alter tables and
transform data? Is there then a way to automate the FTP and upgrade
processes, along with perhaps putting a “site upgrade” message up for
the minute or so the upgrade would take? What if, during an upgrade, a
user was editing a record (which in my case may be entire pages of
text), and tried to submit it while I was making database changes? Is
there a way to automate checking for active sessions before the upgrade
and making sure they know to wait, or perhaps queuing any activities
until it’s complete?
Or is there a completely better scenario for actual deployment?
Also does anyone have information on server scalability, like if I
needed to split the application among multiple servers in the future? Is
there a resource explaining how that would be accomplished?
Thanks for any help!