Ruby 3 was released three months ago, so it was a time to support it in InvoicePrinter, a pure Ruby library for generating PDF invoices.
InvoicePrinter 2.1 dependencies were upgraded to Prawn 2.4 and Ruby 3 by following the separation of positional and keyword arguments. If you pass a hash to
InvoicePrinter::Document::Item, you now need to use double splat in front of it:
InvoicePrinter::Document.new( **params )
This tells Ruby you are indeed passing a hash for keyword arguments.
Apart from Ruby 3 support, I improved the single line note. The
note field was cut if it was longer than one line. The issue is now fixed by supporting a multi-line note. Here is how it looks like.
Finally, this release removes address fields that got deprecated with a warning in 2.0 release.
Instead of providing addresses in a granual fields as:
provider_street: '5th Avenue', provider_street_number: '1', provider_postcode: '747 05', provider_city: 'NYC',
You now have to do it as follows:
provider_address = <<ADDRESS Rolnická 1 747 05 Opava Kateřinky ADDRESS invoice = InvoicePrinter::Document.new( number: 'NO. 198900000001', provider_name: 'John White', provider_lines: provider_address,
Since the library doesn’t want to be concerned with formatting the address fields, it’s better to support addresses in a more flexible way by having a multiline field.
2.1.0.rc1 for you to try and the final
2.1.0 will follow shortly. If you are missing something in InvoicePrinter, it’s a good time to open a feature request for
← IT'S OUT NOW
I wrote a complete guide on web application deployment. Ruby with Puma, Python with Gunicorn, NGINX, PostgreSQL, Redis, networking, processes, systemd, backups, and all your usual suspects.