Fork me on GitHub

Replacing the ‘rails’ command

I always forget about the ‘svn copy’ command, and Josh Susser has reminded me of its awesome usefulness. In this case, its usefulness as a way to start projects.

I took his advice a step further. Rolling on the idea of an ‘Image’ of a basic Rails project with its own repository, on top of setting the svn:ignore properties for log/ and tmp/ I also installed a couple things I use in almost every project:

  1. acts_as_authenticated
  2. ar_fixtures
  3. Capistrano rake and deploy tasks

I also generated an authenticated controller/model and added an initial user to my migration, so I’m all set to login. Before importing my ‘basicauth’ Rails image to subversion, I created my svn best practices directories (branches/ tags/ trunk/) and put the rails code into trunk.

After importing, I’m all set to start as many rails projects as I want. Why not use bash scripting to make it even easier.

#!/bin/bash
echo 'Creating new rails app'
cd ~/Sites/
echo 'Creating repository'
svn copy svn+ssh://myuser@myrepos.com/svn/rails/basicauth svn+ssh:/myuser@myrepos.com/svn/rails/$1
echo 'Checking out code'
svn co svn+ssh://myuser@myrepos.com/svn/rails/$1/trunk $1
cd $1
mate .

If I save this, chmod +x it, and copy it to /usr/local/bin/ – Now all I have to do to start a new rails app is:

myrails anewapp

It will copy the repository, checkout the code, and even open it in TextMate.

2 Responses to “Replacing the ‘rails’ command”

amcvega Says:

I tried using the code snippet you posted. I get stuck with the svn copy part.

I don’t think svn copy supports cross-repository copying. How were you able to get past it? Are all your projects under one repository?

AQ Says:

True - For this setup all projects would have to be in one repository. This isnt a problem really if you dont have more then one user (yourself) or a set number of users who have access to everything. I set up a new repository called ‘rails’, and have all my projects underneath it, like
/svn/rails/newproject/
If you want to create seperate repositories for each project, I suppose you could put that in a bash script to, then export the ‘base’ project and reimport it into the new repository.

Leave a Reply

About

QuirkeyBlog is Aaron Quint's perspective on the ongoing adventure of Code, Life, Work and the Web.

For more information check Quirkey.com

QuirkeyBlog is proudly powered by WordPress

Categories