Wow ... Jannis Harder's program is down to 295 bytes ...
Mmm... Let me try to squeeze a little bit more.

First, according to the Quiz, we do not need to take care of multi-mumbers,
so, I change $*.join to $*[0] ==> just take the first number ==> save
me 2 bytes.

Second, I got new idea again ( always base on Jannis Harder's lastest code ), 
this time it is down to 264 bytes

( note: run this program without any parameter will fail after replace
$*.join by $*[0],
if this is not acceptable, replace back, so my program will become 266 bytes.
After all, this program likes Jannis Harder's origin, do not do many
error checking;
for example: if input is  "lcd.rb -s abc xxx" ==> size invalid will
become size zero,
and any no digit character will become zero digit)

s=(s=$*.index"-s")?$*.slice!(s,2)[1].to_i: 2
d,="\21\265\22H\245\10-\0\23".unpack"B*"
f=" "
o=48
y=(0..4).map{|x|$*[0].split('').map{|z|u=d[7*z.to_i,7]
x%2==0 ?u[x/2*3]>o ?f*s+f+f:f+"-"*s+f:(u[h=x*4/3]>o
?f:"|")+f*s+(u[h+1]>o ?f:"|")}*f}
y[3,1]*=s
y[1,1]*=s
puts y