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$