This is a simple example of adding a conditional and partial unique index to Rails applications backed by PostgreSQL.
Conditional unique indexes in Rails and PostgreSQL
InvoicePrinter 1.1 “Cape Town” released
Tomorrow starts the famous African Ruby conference Rubyfuza in Cape Town and since I am attending I decided I will do a final 1.1 release of InvoicePrinter from South Africa just before everything begins. So here we are, this is a 1.1 “Cape Town” release.
Do not run Rails with pending migrations
Database migrations are the tricky part of any deployment. They make zero-time deploys problematic. They requires special attention since they can break stuff. Some might choose to run migrations automatically, some of us run them manually. But one thing is almost always true; the production code without migrations should not ever run. So how not to run your code without doing migrations first?
Editing XFA PDF forms on Linux/Fedora
PDF should be this nice universal format that many government institution now work with. But what if they require you to fill in XFA forms inside their template PDFs? The ones I need to fill for my insurance company are certainly not supported in the standard Document Viewer shipped with Fedora. This weekend I tried installing Master PDF Editor and guess what? It works like a charm for me. They even offer various RPM builds for CentOS 6/7. And they work on my Fedora out of the box. Lucky me. Thanks a lot for this!
Invoicing from the command line
Are you a freelancer? You don’t need to leave your command line to create invoices for your clients. InvoicePrinter is a Ruby library for producing PDF invoices without too much hassle. If you haven’t seen it before, you can read more about it in the announcement or its GitHub page. With the upcoming 1.1.0 release (currently as release candidate) a command line executable is included so you can now use command line to invoice your clients. No need to learn Ruby, just pass the data in the familiar JSON format! Here is how to create your first invoices.