some of my favorite ruby gem names

hoe, factory girl, rack, naked_rack, deepthroat, punch, shnork, rubbr, beer, pony, strap-on, cheeba, babygitter, backnob, badger, syckle, birdfeed, hosebird, grackle, hammock, sunspot, birdie, hubris, corrupt, gambler, paranoia, peeping, statwhore, slubydoo, slug, crack, ragweed, wee, grudge, inquisition, honkster-jelly, harker, tinkerbell, jacker, mockery, bullshit, i_dont_give_a_shit, monkey_shield, biomass, ass, massive-nancy, sassafras, clingwrap, scraper, castronaut, feedbag, bullet, snailgun, railgun, cap_gun, railgun, shotgun, punch, throat-punch, one_inch_punch, puny, shadow_puppet, hightimes, tadpole, hobosupport, runt, fugit, stammer, curly_mustache, rasta,crazy_ivan, floobs, loofah, boogaloo, mole, syrup, featherdust, grit, crow, pangea, panda, sunspot, japanese_av_actress, hurl, watcher, obsidian, glue, disguise, needle, junebug, jungle, petticoat_junction, juggernaut, jello, honkster-jelly, wizardly, crocodile, stump, burn, fire-hydrant, homeschool, fast_hammer, dutchfaker, fabricator, facade, fattr, profanalyzer, masochism

Posted by jeremy Fri, 16 Apr 2010 17:02:00 GMT


Snow Leopard 10.6 Rails/Passenger

Got this error when loading a rails site served under my local apache"
*** Exception RangeError in PhusionPassenger::Railz::ApplicationSpawner (integer 4294967294 too big to convert to `int') (process 1097):
I updated my passenger gem and regenerated the apache passenger module, updated the httpd.conf at it was all good after that.

Posted by jeremy Sat, 05 Sep 2009 23:10:00 GMT


stupid arguments

rspec controller specs: YourClass.should_receive(:find).with() really cares about argument order and does not accept a hash of values where the params[:key] is named like the key in the hash key => value so:
## controller code
def find_my_fucking_shit
  @my_class = MyClass.special_method_in_model(params[:shit], params[:not])
end

## controller spec
# This will fail and you will want to punch a bitch in the nose because you spent two fucking days 
# figuring you were just really goddamn stupid (which may be true) because it should work but it doesn't
it "should find shit" do
  MyClass.should_receive(:special_method_in_model).with({:shit => 'will', :not => 'work'}).and_return(mock_my_shit)
  get 'find_my_fucking_shit',  :shit => 'will', :not => 'work'
end


# This will pass
it "should find shit" do
  MyClass.should_receive(:special_method_in_model).with('will', 'work').and_return(mock_my_shit)
  get 'find_my_fucking_shit',  :shit => 'will', :not => 'work'
end
Yes, I know about hash_including(). For some reason it failed because ":action => '_controller_action_', :only_path => true" was being included in the with() arguments hash and it made the should_receive fail - even though hash_including is supposed to deal with this. It may be a rspec_rails thing. I have not dug into the rspec code very deep to see what I was doing wrong or if it's a bug or if the universe just hates me.

Posted by jeremy Thu, 22 Jan 2009 06:44:00 GMT


shelling out to the man

In irb: get a listing of files/sym/hard links in my home directory
# stupid simple shell command - from irb or a script to get file listing
system 'ls -al ~/jeremy '


In ruby script: Return the result of a command line operation. Without back-ticks ruby will just return true or false from the exit of the issued command. [wikipedia backticks - computer related]
# the path to ghostscript on the system without the newline character on the end
gs_path = `which gs`.strip
# use the path to convert a file outside of ruby - will return true or false
system %(#{gs_path} -q -dSAFER -dNOPAUSE -sDEVICE#tiffg4 -sOutputFile#foo.pdf foo.tif -c quit 2>/dev/null)
# if I want the output from the command suppressed so it doesn't spew oodles of info (after I'm sure it works - it will stop useful errors as well)
`#{gs_path} -q -dSAFER -dNOPAUSE -sDEVICE#tiffg4 -sOutputFile#foo.pdf foo.tif -c quit 2>/dev/null`


Ruby Docs have massive amount of info about ERRNO (whatever the fuck it is - i'm guessing errors and such but haven't learned it yet). These error objects matter greatly and I think ruby has them wrapped up in a rubish way, but as I said I'm ignorant at the moment. I guess there is shorthand for error objects: $! - last exception; $@ - backtrace; There are many more of these. (whimper!)

Posted by jeremy Mon, 05 Jan 2009 23:03:00 GMT


typo theme: bird flu update

Oh boy do I suck like a black hole. My bird flu typo theme had some major issues in the default.rhtml. So if you've downloaded it grab it again and trash the old one. Now Working: RSS Feeds; ajax comments; ajax admin menus...

Posted by jeremy Sun, 12 Mar 2006 18:39:00 GMT


things i learned the hard way | VI

Error handling in rails is very technical. The TextMate Backtracer Plugin has been invaluable to me in my development in recent days, yet it only gets me to the file(s) when something is amiss in the code.

Building and running tests is one way of confirming the functionality of your application, and I’m learning the power of good testing, be it quite slowly and with a lot of errors.I’ll get there.

Here is a short list of things I had to consider when flopping from code to browser during development and things kept blowing up in my face:

  • Ruby/Rails has RESERVED WORDS. If you have a class/table that isn’t playing nice make sure you aren’t naming it with one of these. This is tantamount to pouring sugar in your gas tank. And then driving in reverse at full speed. While wearing a blindfold. With your hair on fire.
  • Column names in your tables need to change with alterations to any class/model names, as well as any has_many/belongs_to associations along with any model inclusions in your controllers. If you’re not to invested in the code it’d probably be easier to regenerate a fresh app with the correct model/controller name. Running ./script/destroy (the arch nemesis of ./script/generate) can help in crime scene clean up, but you still have all those pesky symbols/variables/methods with the poison name throughout your app patiently waiting to spurt their demonic ire. Exterminate them with aggression.
  • An objects information will carry from request to request in the session but you still have to stuff it into an instance variable inside whatever controller method is being called upon. I have a tingling sensation in my unmentionables that suggests session customization and databases can smooth out this bumpy road, but this strains the withering tethers of my sanity upon contemplation. I can only learn so much each day.
  • Getting compile errors means you’re trying to bake a duck with a hammer on a string in a pail of kittens. It won’t work. Ruby/Rails doesn’t know or particularly care what you are trying to do, but how you are going about doing whatever it is you are trying to do will never, ever work no matter what. Get rid of whatever you added since the last time it worked and try again. Remember when you went to grandmas house and you had to take off your shoes and you weren’t supposed to go out into the field because you’d get muddy? Yeah, Rails has grandma rules that sometimes take all the fun out of life and make your feet cold.

Throwing away code is a part of development, just as throwing away designs is a part of being a designer. Having the willingness to let go of what’s not working makes room for what will. Even if what that is is nowhere to be seen at the moment.

Posted by jeremy Fri, 24 Feb 2006 17:29:00 GMT


idiotis.ms

Cleverness makes me giddy. When you can't innovate - imitate! idiotis.ms Cleverness or me-too fanboy wanna be like the cool kids chaff? In any case it is deliberate and useful to at least one person.

Posted by jeremy Fri, 17 Feb 2006 01:26:00 GMT


things i learned the hard way | V.

First things first. When you make models and then relate them to each other using :belongs_to and :has_many you automagically add a _*method*_ that is the name of your class in your model to all of the other models it has a relationship with. Yes, I know this is 1A Rails stuff but I don't learn as fast as you big brains out there. I started on this journey in 1996 making label tags to stick on furniture for presidents day sales with one ink color while an angry marketing director denounced my lack of moxie. It's a long way from learning how to use the pen tool in illustrator 5 to here. Now that things are really weird here's some code:
@project = Project.find(params[:id])
@hours = @project.hours.find(:all)
I have a *Project* model and an *Hour* model. I have a _projects_ table and a _hours_ table in my database. I use:
has_many :hours
in my project model and:
belongs_to :project
in my hour model. This is why I can apply the _hours_ method to my @project array of objects. ActiveRecord does the hard stuff. Now I wanted to get the total of all the hours for a project. But how to do this? At first I tried looping and trying to add each hours_billed to the next one in the array but I kept getting a fixnum error, or being told that it can't write string to whatever. Yeah, I'm a big dumb monkey hoping to be the one in a million to randomly reproduce the works of shakespeare by banging on my powerbook while shrieking and flinging my poo. I eventually opened my picaxe and found something called *inject*. This looked promising. But I, in my unique way, visualized my @project array as needing to be fiddled with to extract the column I wanted and get the value that was inside of it. I tried:
@total = @hours.billed_hours.inject(0) {|sum, element| sum + element}
Thinking this is how it should work. I mean when you loop through your instance variables in your views you access the attributes of your object by putting _object.your_column_ so I thought this was the way to do it.

*_WRONG!*_

I kept getting a noMethodError because there was no method called *billed_hours* in my model. WTF? After I inquired at the irc room #rubyonrails about how to do something like this I was directed back to the *inject* method, except this time I got the little nugget of enlightenment I so desperately needed. Check it out:
@total = @hours.inject(0) {|sum, element| sum + element.billed_hours}
Holy shit! It worked!. I was trying to force it before it was ready (that's what she said) and all I needed to do was understand how you use the *inject* method to iterate through a collection of objects. My assumption of needing to extract the attribute before the block was wrong _wrong_ _*wrong*_! You feed your collection of arrays into the block AND THEN call the attribute you want from each array inside of the block statement and as it evaluates each array that passes through your magic walking fingers machine it will add the stuff you tell it to and when it gets done you have a total. I plan on extrapolating this knowledge into more understanding and eventually prettier code. I'm always getting ahead of myself, and this was just one in a lifelong string of examples. The pragprog books use encouraging, accessible language to explain and educate someone who is using their materials to learn Ruby and Ruby on Rails. I know the words are giving me the information I need. The problem comes when my internal parser bends the words into a funhouse mirror reflection of their literal meaning and then I find myself feeling like I'm 2 steps behind and I missed the base abstractions that everyone else just knows because why wouldn't you know that, stupid? I'm fighting 3 battles at once with this stuff. I'm fighting the learning disability with language, the attention deficit disorder, and the peculiar emotional twists that can result from 30 years of living with the first two. I think in dependencies and relationships. Everything has a cause and effect. I've always understood that information is constant, it is just it's form that changes. The major hurdle has been translating the syntax into jeremy-speak and converting external information to internal understanding while avoiding the frustration and despair these activities can produce. So now I know you can get at the attributes of your object (the columns in your rows) inside the block that the inject method expects as an argument. Next.

Posted by jeremy Sat, 21 Jan 2006 17:32:00 GMT


holy slow sudo port install mod_ruby

Every time I challenge the silicon gods by installing yet another demanding software package on my powerbook G3 I always start by consciously dismissing the age and condition of the laptop. The machine is 6 years old, has 386mb of ram, a 9 gig hard drive, a 500mHz processor, and a first generation airport card. After installing tiger and developer tools there is a little under 2gb of disk space left.

There is a ghost impression of the keyboard etched into the surface of the LCD screen from the oil left on the keys by my fingers. I have dropped, sat on, stepped on, rolled over, spit on, slammed shut, forced open, poked, prodded, wedged, and pried loose this poor machine during the 6 years, 2 SXSW’s, many business trips, not as many vacations, and 6 operating system upgrades of it’s life.

Every time I do something beyond surf the web on grandpa pismo and it doesn’t start smoking or tell me to hold the power button down in 5 different languages I experience a trepid euphoria not unlike that experienced by a man who only hears the metallic click of the firing pin during a game of russian roulette.

Around minute 30 of hour 2 of installing mod_ruby using darwin ports (just to see if I could) I started to get nervous. I was using a wireless connection, the elderly (original) battery was at 50% and sinking and I was having a hard time staying awake. it was 2:30 a.m. which is actually 3:30 am to my internal clock seeing as we’re only a few days in to the daylight savings time switch.

Being the dedicated, task focused person I am I… fell asleep.

I have yet to assess the outcome of this latest haphazard command line escapade.

Posted by jeremy Wed, 23 Nov 2005 11:00:00 GMT