Setting up a Rails Development Environment on Windows Using Eclipse

Posted by Brian in Howto, Rails (February 10th, 2006)

I’ve updated the popular article to include instructions for integrating the environment to handle the latest build of Eclipse (v3.1.2).

You can read the full article here. (Link opens in a new window.)

create_update_by Plugin

Posted by Brian in Products, Rails (February 10th, 2006)

Provides optional functionality on “save” and “update_attributes” methods
that allows developers to pass the user id as a parameter.

Example

Assume you have a books table

  create_table :books do |t|
    t.column :created_at, :datetime
    t.column :updated_at, :datetime
    t.column :title, :string
    t.column :created_by, :integer
    t.column :updated_by, :integer
  end

In your controller, you can now do

  b = Book.new
  b.title = "My Book'
  b.save(session[:user_id]

If you don't have created_by or updated_by in your table, the stamping will not occur.
No additonal configuration is needed.

Installation

Installation is easy... just use the built-in Plugin installer for Rails.

ruby script/plugin install http://svn.napcsweb.com/public/create_update_by

Acknowledgements:

Thanks to DeLynn Berry, the creator of the original Userstamp plugin for the idea.
The Userstamp plugin can be found at
http://www.delynnberry.com/pages/userstamp/

This plugin was created because I wanted to provide more control
over the assignment of created_by and updated_by.

Excel Export Plugin

Posted by Brian in Products, Rails (February 10th, 2006)

I’m pleased to announce the new Excel Export plugin for Ruby on Rails. This plugin allows Rails developers to easily export their data to an Excel spreadsheet.

To install via SubVersion,

ruby script/plugin install http://svn.napcsweb.com/public/excel

Simple example

Let’s assume we have two models… a Project and a Task. A Project has_many :tasks. In one of our controllers, we can create the following method which will stream a new Microsoft Excel document to the client’s browser.

  def export_project_to_excel
e = Excel::Workbook.new
@project = Project.find(:all)
@tasks = @project.tasks
e.addWorksheetFromActiveRecord "Project", "project", @project
e.addWorksheetFromActiveRecord "Tasks", "task", @tasks
headers['Content-Type'] = "application/vnd.ms-excel"
render_text(e.build)
end

More Advanced example

This time, let’s create an array of hashes. This way, we can manipulate our data ourselves, instead of letting the plugin do the mapping. This is really useful when you have “has_many” or “belongs to” relationships and you want to export meaningful values instead of the foreign keys.

  def export_book_info_to_excel
    e = Excel::Workbook.new
    books = Book.find(:all)
    array = Array.new
    for book in books
      item = Hash.new
      item["Title"] = book.title
      item["ISBN"] = book.isbn
      item["Author"] = book.author.last_name
      item["Category"] = book.category.name
      item["Total Sales"] = book.sales.size
      array << item
    end
    e.addWorksheetFromArrayOfHashes("Books info", array)
headers['Content-Type'] = "application/vnd.ms-excel"
render_text(e.build)
end