Subversioning a Rails App
The time when application versions where stored in different folders or in zip files has ended. Today we have great tools like Subversion or CVS. This tools must be known by everybody, but for those who aren’t known, they are applications that control versions of files.
While developing a Ruby on Rails application it’s good to use a system like Subversion. In this howto I’ll explain my experience subversioning my Rails app.
The first step is to create a subversion repository. Mine is created with a web interface in my hosting account, if you can control your subversion repositories and you don’t know how to create it the chapter Creating and Configuring your Repository from SVN book may be useful. My repository url is (for example) http://someaccount.somehosting/myapp.
For subversioning a rails app we need, of course, a rails app. We’ll create a dummy app for testing. After that we have to import this directory structure to our repository
jsegura@ibook:~/dev/rails $ rails demo create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments jsegura@ibook:~/dev/rails$ svn import demo http://someaccount.somehosting/demo -m "Rails import"
The next actions have to be done in a working copy, the directory demo is no longer necessary.
jsegura@ibook:~/dev/rails $ rm -rf demo jsegura@ibook:~/dev/rails $
After obtaining the working copy we have to prepare our repository for developers usage. The steps are:
- Removing temp files
- Removing log files
To remove these files doesn’t mean “they are unnecessary”, only means “there is unnecessary for these files to stay in the repo” .
jsegura@ibook:~/dev/rails/demo$ svn remove log/<strong> D log/development.log D log/production.log D log/server.log D log/test.log jsegura@ibook:~/dev/rails/demo$ svn propset svn:ignore "*.log" log/ property 'svn:ignore' set on 'log' jsegura@ibook:~/dev/rails/demo svn svn svndumpfilter svnserve svnversion svnadmin svnlook svnsync jsegura@ibook:~/dev/rails/demo$ svn ci -m "Remove and ignore log files" Sending demo/log Deleting demo/log/development.log Deleting demo/log/production.log Deleting demo/log/server.log Deleting demo/log/test.log Committed revision 3.
jsegura@ibook:~/dev/rails/demo$ svn remove tmp/</strong> D tmp/cache D tmp/pids D tmp/sessions D tmp/sockets jsegura@ibook:~/dev/rails/demo svn propset svn:ignore "*" tmp/ property 'svn:ignore' set on 'tmp' jsegura@ibook:~/dev/rails/demo$ svn ci -m "Remove and ignore temp files" Sending demo/tmp Deleting demo/tmp/cache Deleting demo/tmp/pids Deleting demo/tmp/sessions Deleting demo/tmp/sockets Committed revision 4.
To end up, the only final step is not subversion the config for accessing the database.
jsegura@ibook:~/dev/rails/demo$ svn propset svn:ignore "database.yml" config/ property 'svn:ignore' set on 'config' jsegura@ibook:~/dev/rails/cdemo$ svn ci -m "Ignoring database.yml" Sending demo/config Committed revision 5. jsegura@ibook:~/dev/rails/demo$