Tech Tidbits - Ruby, Ruby On Rails, Merb, .Net, Javascript, jQuery, Ajax, CSS...and other random bits and pieces.

Sunday, March 23, 2008

Ruby on Rails - Using External Asset Hosts

Rails uses the "public" directory on the current host as the default location for static assets (images, CSS, Javascript, etc). Setting up your Rails app to use an external assets server is as simple as adding a single line to a configuration file.

Add the following line to your config/environment.rb file:

ActionController::Base.asset_host = ''

It's also possible to set a single environment to use an external asset host:

Add the following line to config/environments/production.rb (the most likely spot - this line should already be in this file, but commented out):

config.action_controller.asset_host = ''

Now this line in my layout

<%= stylesheet_link_tag 'scaffold/base' %>

will translate to

Additional information on setting up multiple asset hosts can be found at:

Wednesday, March 12, 2008

Ruby Gem - Highline

I was looking for a way to prompt a user for input on the console and ran across the RubyGem HighLine. It does a lot more than this, but here's how to capture STDIN from the console:

require 'rubygems'
require 'highline/import'

username = ask("Enter your username: ") { |q| q.echo = true }
password = ask("Enter your password: ") { |q| q.echo = "*" }

Here's the output on the console:

$ ruby highline.rb
Enter your username: doug
Enter your password: ******

Get it here:


or simply install the gem the normal way:

$ sudo gem install highline

Autotesting Javascript in Rails

From Dr. Nic's Blog:

Autotesting Javascript in Rails

Installing Ruby without openssl

When installing Ruby on an old machine, I got this error:

ruby make[1]: *** [ossl_ssl.o] Error 1

Other than installing openssl, which wasn't option, install ruby without openssl:

$ ./configure prefix=/home/doug/bin/ruby --without-openssl

Monday, March 10, 2008

Javascript - insertAfter(), formatCurrency, DOM Scripting


function insertAfter(newElement,targetElement) {
var parent = targetElement.parentNode;
if (parent.lastChild == targetElement) {
} else {


function formatCurrency(amount) {
var i = parseFloat(amount);
if(isNaN(i)) { i = 0.00; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);
if(s.indexOf('.') < 0) { s += '.00'; }
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
s = minus + s;
return s;

DOM scripting - create text node with value of &nbsp;

var textEl = document.createTextNode('\u00a0');

Accordion Effects with Scriptaculous

I had a couple recent projects that required an accordion effect. I normally use jQuery, but found a couple nice Prototype/Scriptaculous accordions (one is for a Rails project, so we're already using Scriptaculous).

stickman labs

Note - The stickman labs accordion doesn't appear to work with the latest Prototype (1.6.1). I'm using the combined js file from the stickman site.

About Me

My photo
Developer (Ruby on Rails, iOS), musician/composer, Buddhist, HSP, Vegan, Aspie.