RailsConf Europe 2008: heading to berlin!

Filed Under (Conferences, Rails, Ruby) by Leonardo Borges on 30-08-2008

Tagged Under : , ,

The title says it already.

On monday I’ll be going to Berlin to attend this year´s RailsConf.

This will be my first one and of course my expectations are pretty high!

As usual, after the conference I’ll try and give a summary of what happened there, providing as much content as I can.

Anyone else’s going??? :)

C u there!

Mac OS X: Getting MySQL and Rails to work

Filed Under (Mac, Rails, Ruby) by Leonardo Borges on 28-08-2008

Tagged Under : , ,

So I couldn’t resist and bought myself a MacBook Pro! It’s my first week with my new toy and I’m really enjoying it.

But I need to do something useful with it so I started to prepare it to be my new development platform, starting with Ruby/Rails + MySQL: Here is where the fun begins!

After I installed both Rails and MySQL, I fired up a terminal an typed:

sudo gem install mysql

…and here is what u get

ERROR: Failed to build gem native extension.

If you google this error you will find a couple solutions and this is the one that worked for me:

ARCHFLAGS="-Os -arch x86_64 -fno-common"
sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
--with-mysql-config=/usr/local/mysql/bin/mysql_config

Now, confident enough, I created a sample rails app and tried to create the development database:

leo$ rake db:create (in /Users/leo/projects/test)
dyld: lazy symbol binding failed: Symbol not found: _mysql_init

Doesn’t look happy yet huh? This took me a while to figure out but it turned out to be fairly simple.
I have no idea why but after I installed the gem I had the file mysql.bundle in two different places:

/Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
/Library/Ruby/Gems/1.8/gems/mysql-2.7/mysql.bundle

The solution was to remove the first copy of the file. Now everything is working fine at this end!
I really hope this is useful to someone!

Rails: Vulnerability on REXML

Filed Under (Rails, Ruby, Security) by Leonardo Borges on 24-08-2008

Tagged Under : , ,

REXML, the XML library uses by many ruby apps, including rails, has a vulnerability that requires an immediate patch on whatever rails version you’re using.

Details and instructions on the official rails weblog, here.

But basically, this is what you need to do:

gem install rexml-expansion-fix

Then, require rexml-expansion-fix in your rails’s app environment.rb file.

Yes we do eat.

Filed Under (World) by Leonardo Borges on 15-08-2008

Tagged Under :

Besides the fact that I am a software developer, I do eat. I even enjoy doing so. Specially when I’m traveling.
That’s why i decided to put up a new weblog only for this kind of stuff - it’s called Travel tips - food & stuff. Basically for friends and whoever else might be interested.

There I plan to share some nice restaurants I’ve been to. At least to start with.

Hope u like it!

Why I like Ruby #1: alias_method

Filed Under (Ruby, Why I Like Ruby) by Leonardo Borges on 07-08-2008

Tagged Under : ,

So you found yourself in the need to override a method but still count on it’s old behaviour?

No problem! Override it with your new code, call super and…. Uh oh!! Suddenly this turned into a problem… Let me give some more context.

I was testing Ferret (and the acts_as_ferret plugin) in a project to provide full text search capabilities to our models. One of the things the plugin does is to add a new method to ActiveRecord, called find_with_ferret. That way, every model can use it. Great!

So I thought that would make sense for me to remove all diatrictics from the input text before letting ferret do its job. You know, like removing umlauts and all that.

I could do that by overriding this method with code to remove the undesired chars and then call its older version to finally do the search - something like calling super, but not quite. And I didn’t want my models to inherit from anything else than ActiveRecord::Base. That wouldn’t make any sense.

alias_method to the rescue!

You know that to redefine a method in an existing class you can open it up and rewrite it. But since you don’t wanna loose the behaviour provided by the original method, this is how you can achieve this:

1
2
3
4
5
6
7
8
9
10
module ActiveRecord
  class Base
    alias_method :find_with_ferret_original, :find_with_ferret
 
    def find_with_ferret(q, options = {}, find_options = {})
      remove_diatrictics!(q)
      find_with_ferret_original(q, options, find_options)
    end
  end
end

And you’re good to go. On line 3 you’re just giving the original method an alias, making a copy of it.

Then you redefine it the way you like and on line 6 you call the old version to make sure u still got the same behaviour.
Now all my models can benefit of this change without requiring them to call another method nor inherit from another class.

Cool, huh? :)

The biggest Rails event in latin america

Filed Under (Conferences, Rails, Ruby) by Leonardo Borges on 04-08-2008

Tagged Under : , ,

Behold latin american railers!

This year we will have the Rails Summit Latin America on October, 15th and 16th, in São Paulo, Brazil.

It’s by far the biggest Rails event we’ve ever had, including many of the speakers that were present at RailsConf.

Fábio Akita is also one of the speakers and provides more details on his blog.

If you’re a assumed rails geek don’t miss the opportunity to hear from the big names and to know a beautiful country like Brazil.

Oh, btw, if you’re brazilian, like me, you have no excuse to miss this party!

Enjoy!!!


Rails Summit Latin America