colinbjohnson/aws-missing-tools — pull request #34 by anujbiyani (2013-06-05 02:49:43+00:00)
Title: Aws ha release ruby

# AWS Missing Tools gem

After noticing a [bug in the AWS API](https://github.com/colinbjohnson/aws-missing-tools/issues/32) and finding the solution a bit too complicated to implement in bash for my tastes, I decided to rewrite aws-ha-release as a Ruby script. In doing so I made AWS Missing Tools a gem (I have not pushed it to RubyGems, though; leaving that to you).

Advantages:
1. maintainability - Ruby is testable and more readable than bash
2. versioning - RubyGems recommends [semantic versioning](http://docs.rubygems.org/read/chapter/7) which will allow approves to be made to code in this gem without impacting users who rely on a specific version
3. usability - Instead of requiring users of these scripts to have a bunch of AWS CLI tools installed, the [AWS SDK](https://github.com/aws/aws-sdk-ruby) can be relied on.

Disadvantages:
1. unfamiliarity - people might not be as familiar with Ruby as they are with Bash (or maybe they are, I don't know)
2. backwards compatibility is initially broken - for the many scripts that I haven't yet touched, links to those scripts are unaffected. Anyone who links directly to [aws-ha-release.sh](https://raw.github.com/colinbjohnson/aws-missing-tools/master/aws-ha-release/aws-ha-release.sh), however, will be presented with a broken link.

I did keep the old aws-ha-release.sh script around; it's been moved to the bin directory.

Also I added myself as an author =)

## Going Forward

If this pull request gets merged in, then hopefully over time the remaining scripts can be ported to the gem. If instead a new repository is created for this gem, then the other scripts can be deleted for now and slowly added back.

### Readme

Currently I intended for one README to explain how all of the various scripts are used. If that gets too big (which it probably will), then I think the Wiki would be a good idea.

### Testing

I really like test-driving my code, and right now almost all of the code I wrote is tested through RSpec. Feature/integration tests could be written using [Aruba](https://github.com/cucumber/aruba).