{"id":87,"date":"2009-03-21T20:12:50","date_gmt":"2009-03-22T02:12:50","guid":{"rendered":"http:\/\/www.pervasivecode.com\/blog\/?p=87"},"modified":"2016-01-03T21:15:16","modified_gmt":"2016-01-04T05:15:16","slug":"first-public-release-of-my-avanticonveniences-gem","status":"publish","type":"post","link":"http:\/\/www.pervasivecode.com\/blog\/2009\/03\/21\/first-public-release-of-my-avanticonveniences-gem\/","title":{"rendered":"First public release of my AvantiConveniences gem"},"content":{"rendered":"<p>From the README:<\/p>\n<p>AvantiConveniences is a set of convenience code for Ruby on Rails applications.<\/p>\n<p><!--more--><\/p>\n<p>ArgChecks helps you implement simple sanity-checking of arguments, like permanent assertions or a poor man&#8217;s Design by Contract facility, so you can write code that will Fail Fast (see <a href=\"http:\/\/c2.com\/cgi\/wiki?FailFast\">http:\/\/c2.com\/cgi\/wiki?FailFast<\/a>).<\/p>\n<p>HashExtensions currently just adds the Hash#rekey method.<\/p>\n<p>StringExtensions provides String quoting (not escaping) with single quotes, double quotes, or a caller-specified quoting character, and a String#dehumanize method to do the reverse of the String#humanize method provided by ActiveSupport.<\/p>\n<p>TextFormatter provides methods for hyphenating words for word-wrapping.<\/p>\n<p>URIExtensions provides URI::Generic#query_from_hash, which will create a URI query string from a Hash.<\/p>\n<p>INSTALL:<br \/>\nIf you haven&#8217;t done this before: <\/p>\n<pre>gem sources -a http:\/\/gems.github.com<\/pre>\n<p>Then: <\/p>\n<pre>sudo gem install JamieFlournoy-AvantiConveniences<\/pre>\n<p>See also: the <a href=\"http:\/\/github.com\/JamieFlournoy\/avanticonveniences\/tree\/master\">AvantiConveniences GitHub project page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>From the README: AvantiConveniences is a set of convenience code for Ruby on Rails applications.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/posts\/87"}],"collection":[{"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":3,"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":354,"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/posts\/87\/revisions\/354"}],"wp:attachment":[{"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.pervasivecode.com\/blog\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}