Wednesday, August 24, 2011

Switching between Ruby Runtime versions on Windows


A nice tool for switching between ruby versions on windows is the pik gem
To use it, run gem install pik
Install locally by running: pik_install C:\pik
And add the installation dir (in this case c:\pik) to your system path.
Once you have that set up, you add ruby installations by running pik add C:\Ruby192\bin
and switch between them by pik 192




Running Rails 3.x with mysql2 on Windows

Every time I have to set up Ruby & Rails with MySQL on windows its the same old drag.

The easy part goes like this:
Installing Ruby 1.9: download ruby installer
Installing gem:  follow gem installation instructions
Install MYSQL: I like using the WAMP server, but its also possible to go for the MySQL regular installation
and:
Install Rails 3.x: run gem install rails

But then you will need to:
Install mysql2 by running gem install mysql2 -v 0.2.6
and
Copy libmySQL.dll from mysql bin to ruby-home/bin
This is downloadable from http://www.mysql.com/downloads/connector/c/

Now generate and run your server.
Don't forget to configure your database.yml file

Note: that if when sunning the server, it responds like:
Could not find gem 'mysql2 (~> 0.2.11)' in any of the gem sources listed in your Gemfile
Then go into your server root directory and open up the Gemfile
substitute the line:
gem 'mysql2', '~> 0.2.11'
with
gem 'mysql2', '~> 0.2.6'

...And your good to go.








Thursday, August 11, 2011

Ruby 1.8.7 CSV parser workaround

Apparently there is some kind of problem when using the CSV parser for particular text structures. I want able to determine the exact cause of this problem expect that for some csv structures, the parse process result in an error.

In my frustration I resorted to write my one parser that is implemented as following:

 def self.parse(text)
    rows=text.split("\r")
    res=[]
    rows.each{|row|
      res << row.split(",")
    }
    res
  end

And amazingly enough, that's what did the trick.

Independent on Sundays.




Tuesday, August 2, 2011

Flex and Rails


Hi Peter
Thanks for visiting my blog

In my company we have quite an extensive use of the ruby - flex combination, and to my experience it has the best results for the fastest development time.

The key to communicate between rails and flex is to set up REST services that generate json/xml structures.

On the server side, all you have to do is have the controller render the result as json/xml using the following line:

render :json => {an object with the data you want to send}
or
render :xml => {an object with the data you want to send}

It works just as well in rails 3 as in 2.x

On the flex side, it gets a little more complicated, but in essence, you send an http request to the rails service and on the ResultEvent you encode the string you get to json/xml respectively

here is a code example:

protected function call(action:String,arg:Object,resFunc:Function, failFunc:Function,resultFromat:String="e4x"):void{
            var service:HTTPService;
          
                service = new HTTPService();
                service.url = server+"/"+action;
                service.method = "POST";
                service.contentType = "application/xml";
                service.resultFormat = resultFromat;
                service.useProxy = false;
                service.addEventListener(ResultEvent.RESULT,resFunc);
                service.addEventListener(FaultEvent.FAULT, failFunc);
               
          
            arg["account_id"] = accountId;
            arg["service_key"] = serviceKey;
           
            var req:Object = new Object();
            req["data"] = arg
           
            service.send(req);
           
        }



public function getDetails(result:Function,fault:Function):void{
            var o:Object = new Object();
            call("get_details",o,result,fault);
        }




private function detailsResult(e:ResultEvent):void{
                details= JSON.decode(String(e.result));   
            }

Monday, August 1, 2011

Where do Good Ideas Come From


At WikiBrains, we have solved this:





Stay tuned, while we change the world.