/blog/index.xml

My Heroku Cheatsheet

My Heroku Cheatsheet

You can find all this in the Heroku docs, I’m just filtering out the stuff I use very frequently. I will keep updating this so check back later. ALl of my examples include the -a myapp at the end because 95% of my apps have both staging and production environments so I have gotten in the habit of using this option.

Heroku Postgres DB

Download current database:

heroku pgbackups:capture --expire
curl -o latest.dump `heroku pgbackups:url`
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d myapp_development latest.dump

Read More

In Ruby, classes are cheap

In Ruby, classes are cheap

Developers coming from Perl or Php often bring conventions from those languages into Ruby. One important thing I like to tell new Ruby developers is that classes in Ruby are cheap so use them liberally. Ruby is an Object Oriented language and objects are the best way to communicate your intent to future developers reading your code. Let’s look at examples of where a class is more appropriate.

First, we have a method returning multiple values for status.

class ExternalOrderService
  def handle_order(order_status)
    # stuff here
    if order_status.include?('Fail on Shipment')
      message = 'Order Failed because of Shipment'
      success =  false
    elsif order_status.include?('Order Processed')
      message = 'Order Failed because of Shipment'
      success =  false
    else
      message = 'Order Failed for unknown reason'
      success =  false
    end
    [message, success]
  end
end

Read More

Multi line strings in Ruby

Multi line strings in Ruby

Ruby has some nice ways to multi line strings. First, this one is the worst. If you are coming from Java or Javascript you might be tempted use it though.

# Do not do it this way
str = 'Lorem ipsum dolor sit amet, duo nusquam minimum id, ius suas elitr ' +
        'persius eu. Mel tamquam verterem inciderint in. Solum propriae cum ut.' +
        ' Cum utinam nonumes nominavi eu, mazim dolor per in.' +
        "\n" +
        'Debet vivendo pri ei, nec hinc labore in. Duo ad vocibus oporteat ' +
        'appellantur. Nibh idque no eos, mel viris partiendo ei, te pro ' +
        'discere diceret. Vero aliquid quo an. Porro lobortis convenire vis ' +
        'ea, copiosae epicurei percipit nam ut.'

Read More

MySQL group_concat and Postgres array_agg

MySQL group_concat and Postgres array_agg

Mysql

I recently discovered a cool function in MySQL that is nice for doing group by queries where you want to return a column with a comma separated list of data to sum up totals. I learn best from examples so let’s look a 3 table example.

Products

CREATE TABLE products (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  PRIMARY KEY (id)
)

Inventory Items

CREATE TABLE inventory_items (
  id int(11) NOT NULL AUTO_INCREMENT,
  product_id int(11) NOT NULL,
  sku varchar(255) NOT NULL,
  PRIMARY KEY (id)
)

Orders

CREATE TABLE orders (
  id SERIAL,
  inventory_item_id INTEGER NOT NULL,
  amount INTEGER NOT NULL,
  PRIMARY KEY (id)
)

Read More