Archive for March, 2006

Random pastel background

I wanted each order to have a random pastel background.

# assign random pastel color to this order
colors = ['D0', 'D8', 'E0', 'E8', 'F0', 'F8', 'FF']
color = ''
3.times do
color += colors[rand(7)].to_s
end
order.color = color

Having never used the rand() function before, I wanted to put this up to remind myself how it works.

Comments

rake migrate for production environment

So, I’m happily developing away on my test machine. I make some changes. I commit them to my subversion repository. Having not set up a post-commit hook, I head to the webserver and update the local copy and I’ve got my changes. I made a database change, so I run rake migrate and restart the webserver.

It’s not working. I’m getting a Rails Application Error, instead of the stack trace.

Slight panic sets in. I reset the webserver again. Same problem. The generic error message doesn’t tell me what’s going wrong, so I dig in and investigate.

My production.log file and a quick glance at the database confirm that my production database wasn’t changed by the migration, even though the migration didn’t complain at me.

The default migrate environment is development. I know I can set the environment variable so the default is different, but I would rather err on the side of having to specify that I want something to run in production. I did go ahead and put rake migrate RAILS_ENV="production" in my deployment batch file so it reminds me.

Comments (2)

ruby strftime options for date formatting

Ruby uses the same strftime options as PHP.

I use these all the time, so I just saved them here so I’d always know where they are.

Us as so:

irb: order.shipped_at.strftime("%Y-%m-%d %I:%M")
 => 2006-03-13 02:55


%a - abbreviated weekday name according to the current locale
%A - full weekday name according to the current locale
%b - abbreviated month name according to the current locale
%B - full month name according to the current locale
%c - preferred date and time representation for the current locale
%C - century number (the year divided by 100 and truncated to an integer,
   range 00 to 99)
%d - day of the month as a decimal number (range 01 to 31)
%D - same as %m/%d/%y
%e - day of the month as a decimal number, a single digit is preceded by
   a space (range ' 1' to '31')
%g - like %G, but without the century.
%G - The 4-digit year corresponding to the ISO week number (see %V).
   This has the same format and value as %Y, except that if the ISO week
   number to the previous or next year, that year is used instead.
%h - same as %b
%H - hour as a decimal number using a 24-hour clock (range 00 to 23)
%I - hour as a decimal number using a 12-hour clock (range 01 to 12)
%j - day of the year as a decimal number (range 001 to 366)
%m - month as a decimal number (range 01 to 12)
%M - minute as a decimal number
%n - newline character
%p - either `am' or `pm' according to the given time value, or the
   corresponding strings for the current locale
%r - time in a.m. and p.m. notation
%R - time in 24 hour notation
%S - second as a decimal number
%t - tab character
%T - current time, equal to %H:%M:%S
%u - weekday as a decimal number [1,7], with 1 representing Monday
%U - week number of the current year as a decimal number, starting with
   the first Sunday as the first day of the first week
%V - The ISO 8601:1988 week number of the current year as a decimal
   number, range 01 to 53, where week 1 is the first week that has at
   least 4 days in the current year, and with Monday as the first day
   of the week. (Use %G or %g for the year component that corresponds
    to the week number for the specified timestamp.)
%W - week number of the current year as a decimal number, starting with
   the first Monday as the first day of the first week
%w - day of the week as a decimal, Sunday being 0
%x - preferred date representation for the current locale
   without the time
%X - preferred time representation for the current locale
   without the date
%y - year as a decimal number without a century (range 00 to 99)
%Y - year as a decimal number including the century
%Z or %z - time zone or name or abbreviation
%% - a literal `%' character

In Rails, you have the option of using a helper and using it like this:

ymd(@my_date)

Or, you can add formats and use them like this:

@my_date.to_formatted_s(:ymd)

Pick your preference.

If you have a better way of doing it, I'd love to hear it. Rails helpers work for me for 95% of the cases, so that's what I typically use, but I'm always open to a better way to format dates.

Comments (1)

Print dialog in MS Access

I had a report that would automatically print, but there was no way to select the printer or the tray to be printed from. I found that you can pop up the print dialog from code, so I did this:

Private Sub cmdReportPrint_Click()
On Error Resume Next ' needed in case they click Cancel
DoCmd.OpenReport "rptToPrint", acViewPreview
DoCmd.RunCommand acCmdPrint ' bring up the dialog
DoCmd.Close acReport, "rptToPrint", acSaveNo ' close after printed
End Sub

Just another trick in the bag.

Comments