5 Whys is a great way to get at the root of quality problems. On my last three projects, when I felt like code quality was dropping, I ran a “5 Whys” session. I have found it adds variety, solves a very specific problem, and plugs right in as an alternative to an agile reflection.
It’s not in every agile software team’s bag of tricks. Asking around our fairy savvy office, I discovered it’s far from universal. In the “State of Agile” report from Version One, which includes survey results from 2500 software developers, it wasn’t mentioned. Since I haven’t seen it show up that much in other agile writings, I thought I’d share my experiences here. Continue reading ‘Recipe for 5 Whys with an Agile Software Team’
The latest release of the Carbon Five Database Migration maven plugin supports a new goal: check. The check goal fails the build if the database isn’t up to date. That is, if there are pending migrations the plugin produces a clear message explaining that the database is out of date and lists the pending migrations. Run mvn test and see something like this:
[INFO] ------------------------------------------------------------------------
[INFO] Building Gearlist - Data Access
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------------
[INFO] [db-migration:check {execution: default}]
[INFO] Checking jdbc:mysql://localhost/gearlist_test using migrations at src/main/db/migrations/.
[INFO] Loaded JDBC driver: com.mysql.jdbc.Driver
[WARNING] There are 2 pending migrations:
20100116010256_audit_tracking.sql
20100121052539_add_daily_reports.sql
Execute db-migration:migrate to apply pending migrations.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] There are 2 pending migrations, migrate your db and try again.
It’s very easy to include the check goal in your build lifecycle if you’re already using the db-migration-maven-plugin.
...
<build>
<plugins>
<plugin>
<groupId>com.carbonfive.db-support</groupId>
<artifactId>db-migration-maven-plugin</artifactId>
<version>0.9.9-m2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<url>jdbc:mysql://${db.host}/${db.name}</url>
<username>${db.username}</username>
<password>${db.password}</password>
</configuration>
</plugin>
</plugins>
</build>
Check out the project home for additional documentation and details. There’s also a simple, complete example application showing off this configuration.
Enjoy!
Christian
I’m posting this because it took me too long to figure this out. Hope it saves someone else some trouble. If you want to use named route helpers to generate urls in your erector widgets you need to include ActionController::UrlWriter in your class, like so:
class Views::Layouts::BasicPage < Erector::Widgets::Page
include ActionController::UrlWriter
...
end
I’m working on a application which is deployed to Engine Yard’s Cloud infrastructure and I wanted to automatically redeploy the application whenever our tests passed on our continuous integration server.
Engine Yard will eventually allow us to push a branch to our cloud environment from git (ie “git push engineyard master”) but until that is available the best option seems to be to trigger a github post receive hook directly.
To that end I rewrote an existing script to trigger post receive hooks as a rake task; http://gist.github.com/271433
Continue reading ‘Automatically deploying to Engine Yard Cloud’