308 | Chapter 10: Large Projects
Of course, this only works if all developers promptly check in their new migrations,
and if the migrations are truly independent from each other in the first place. The
multiple-developer scenario always requires good communication. Another draw-
back of Subverted Migrations is that it requires access to the Subversion repository
every time a migration is generated. The other solutions operate only with the work-
ing copy.
The last solution is François Beausoleil’s Timestamped Migrations patch. This
patches Rails to use UTC timestamps rather than simple version numbers. Like Sub-
verted Migrations, this method changes the semantics of the schema_info table to
reflect exactly which migrations have been applied. Timestamped Migrations is not
available as a plugin, but only as a patch against edge Rails (http://blog.teksol.info/
articles/search?q=timestamp).
Issue Tracking
Issue-tracking systems are essential to any large or long-lived project. The term
“issue” is broad enough to encompass things that may not be thought of as bugs or
defects: feature requests, work orders, support requests, or even planning docu-
ments for future changes to an application.
The difference between products called “issue trackers” and those called “bug track-
ers” is largely one of focus; the two typically implement similar sets of features. Issue
trackers tend to be customer-oriented; even if only used by employees, each ticket rep-
resents a customer problem. Bug trackers tend to be focused more on the product; they
collect bugs, feature requests, or other issues regarding the project. One distinguishing
factor is that under a bug tracker, multiple tickets representing the same issue will usu-
ally be folded into one ticket, even if the tickets affect different customers.
One powerful feature that some issue trackers offer is integration with a version con-
trol system. This allows the history of each issue to be correlated with the develop-
ment of the code. Patches intended to fix an issue can reference the issue number
directly. Conversely, issues can reference version control changesets (for example,
“fixed in r1843”), and the issue-tracking system provides the changesets in a friendly
format (such as HTML diff).
Some of the most popular issue-tracking systems are listed here.
Product Platform Description
Bugzilla Perl, Apache or IIS Mozilla project’s bug tracker. Oriented toward open source soft-
ware development. Flexible workflow.
Collaboa Rails Newcomer to the industry; development trunk is still fairly unsta-
ble. Takes the best features from Trac and cleans them up a bit.
Looks very promising.
RT (Request Tracker) Perl, Apache Email-based workflow. More suited to customer support than
issue tracking, but can be used for either or both.