? Earlier 2 items total Later ?

On this page:?

Create a date-based archive from a model

All the functions it needs to run are included. You might already have a 'delta' and 'find_all_by_date' function some where in your code. You could easily use those instead.

Customize the 'find_all_by_date' function to include, say, only published posts.

Add this to your model.
def self.find_all_by_date(year = nil, month = nil, day = nil)
  if year != nil
    from, to = delta(year, month, day)
    find(:all, 
         :conditions => [ %{ created_at BETWEEN ? AND ? }, from, to],
         :order => 'created_at DESC')
  else
    find(:all, 
         :order => 'created_at DESC')
  end
end

def self.list_years()
  list_date_part(:year)
end

def self.list_months(year)
  list_date_part(:month, year)
end

def self.list_days(year, month)
  list_date_part(:day, year, month)
end

def self.list_date_part(part, *fixed_parts)    
  find_all_by_date(*fixed_parts).map{ |record| record.created_at.send(part) }.uniq
end

def self.delta(year, month = nil, day = nil)
  from = Time.mktime(year, month || 1, day || 1)

  to   = from + 1.year
  to   = from + 1.month unless month.blank?    
  to   = from + 1.day   unless day.blank?
  to   = to.tomorrow    unless month.blank? or day
  return [from.midnight, to.midnight]
end

Use Mint on Lighttpd with Rails Caching

If you had to remove the line Rails needs for caching inorder to get Mint to work, heres the fix.

url.rewrite = ( "/mint/?(.*)$" => "/mint/index.php?$1", "/mint/$" => "/mint/index.php", "/$" => "index.html", "([^.]+)$" => "$1.html" )

? Earlier 2 items total Later ?