Vita Rara: A Life Uncommon

Ruby on Rails

Rspec & Shoulda: Specifying the Object Under Test


Categories: | |

Today we needed to test conditional validations on a model. We're using RSpec with the Shoulda macros to do this. Our model looks something like:

Just Say You're Sorry Already


Categories: |

As many know Matt, known as the Merbist, presented a risque set of slides at GoGaRuCo comparing software developers to porn stars. I'll leave as an act to the interested finding the slides.

The presentation somewhat, but the reaction of Matt and some other Rails leaders, DHH in particular, to the reactions of those who were offended by the presentation has engendered an uproar of significant proportions. On April 28th Matt posted his public response to the controversy, and later followed up with the following on twitter: "I obviously made a mistake. I didn't mean to offend anyone but since I did, I failed." Which he also posted to his blog as a followup to his previous public statement.

Shoulda: should_validate_uniqueness_of


Categories: | | |

When testing an ActiveRecord model that validates_uniqueness_of using Shoulda's should_validate_uniqueness_of macro it needs to be wrapped in a context where an instance of the model is created in the database. If there is no record in the database to validate against you'll get an error.

For more information see: Lighthouse Ticket.

Testing Non-Ruby Applications with Cucumber


Categories: | | | | |

Yesterday we got Cucumber working to test an older J2EE application that uses EJB 2.1 for its persistence layer. This application because of the J2EE EJB 2.1 beans has been very hard to near impossible to test in the past. I've been hearing about Cucumber for a while and we decided it was time to take a deeper look.

We plan on adding new features to this application using Rails, and over time porting the existing functionality to Rails. So, having a test suite written in Ruby that can test the application regardless of the underlying implementation was necessary. Cucumber with Webrat to the rescue. The general outline below will work with web applications written in any language. All of the interaction with the application happens at the HTTP protocol level.

Setup (RESTful) Authentication First


Categories:

Well, I've learned a lesson, so learn from me, and don't repeat it. If you're going to use either of the Rails authentication plugins (restful_authentication or acts_as_authenticated), just set them up first, before you start into your own user models, etc. It's much easier that way.

Thank You Zed


Categories:

Dear Zed,

About that long Ruby on Rails rant against its core developers, the Rails community, those of us coming late to the party from other languages and platforms, and just about everyone else in sight... ok, credit where credit is due, Obie Fernandez and Mingle came in for some praise. Anyway, I won't hash it all out again. I really don't care. I will say though I strongly disagree with how you went about it. Bile is bile, and what you wrote is bile. I'm reasonably qualified in the taxonomy of Internet writing to make the identification. (Yes, I've written my share of flames, but none quite so base as yours.)

How I Use Rails Migrations for a New Project


Categories:

Yesterday I started a new Rails project and it got me thinking about how I use migrations at the start of a project. I generally start with models and migrations when I begin a new project.

My usage of migrations tends to differ in the first day(s) of a Rails project. I will frequently roll the version of the data schema between 0 and the current version. I do this because if I forget a field/property on a model I don't define a new migration to add it, I just roll the schema back to 0 (rake db:migrate VERSION=0), change the create table migration, and then do a rake db:migrate to bring the schema right up to date. I find this the most pragmatic method early on and I continue to use it until I can't.

The Future That Has Already Happened


Categories: | | | | | |

January second's Daily Drucker dealt with the future, but not as most business prognosticators or futurists might. As Drucker states it, "The important thing is to identify the 'future that has already happened...'"

The action point for the day is to identifying those trends in our market that have already happened, write about their longevity and their effect on our life and organization.

Software as a Service For the Rest of Us

Over the past few years, and particularly in 2007 Software as a Service (Saas) has really broken out and has become a force in the software industry. The first large scale SaaS offering that really broke through to my consciousness was Salesforce.com, then for me came Basecamp from 37signals.com. Salesforce.com represented a high level enterprise offering, with a high level of complexity and expense. Basecamp brought software as a service home to us all.

2007: A Retrospective


Categories: | | | | |

Personal Life

Sylva and I got married on April 28. It's been a real whirl wind since then. We are expecting our first child on April 1, 2008. My time with Sylva is special and precious. I have a great partner, and look forward to raising a family together.

Overall business issues have dominated this year. I doubt that will be that case next year.

Business

It was a hard business year, but prospects for the future look good.

Quadran

Quadran has arrived. About 63,000 lines of Groovy, Java and JSP, with some XML files to wire it all together, and it's up and running. We turned on our first Quadran installation on December 5, 2007. This was the culmination of a process that began with an initial meeting in September of 2004, and the consummation of the development agreement in July of 2006.

Multi-Model Forms in Ruby on Rails


Categories: |

This isn't going to be an exhaustive tutorial on multi-model forms, but more of some observations from my learning to work with them over the past week. For a great introduction to multi-model forms see Railscasts. The major issue I've found if that the error messages when things go wrong, particularly at the view layer are almost meaningless or at worse utterly and totally misleading.

Syndicate content