Oct 18, 2009

DataMapper - migration from 0.9.x to 0.10.x

Finally got some time to put here some notes for migrating DM from 0.9 to 0.10.

1. Errors. (That means you must fix)
  1.1 options[:default] must not be nil
property :customer_address_id, Integer #, :default => nil
  1.2 options :nullabe are unknown
property :deleted, Boolean, :field => 'deleteflag', :default => false #, :nullable => false
  1.3 +options[:order]+ entry "po.closed_date.desc" does not map to a property in PurchaseOrderLineItem
order_by = [DataMapper::Query::Direction.new(PurchaseOrder.properties[:closed_date], :desc)]
result = PurchaseOrderLineItem.first(:deleted => false, :cb3_id => cb3_id, 'po.deleted.eql' => false, 'po.completed.eql' => 'yes', :order => order_by)
  1.4 For composite keys
(e.g. when you do a migrate!)
property :user_id, Integer, :key => true, :nullable => false
property :role_id, Integer, :key => true, :nullable => false

2. Deprecated:
  2.1 Integer with explicit :serial option is deprecated, use Serial instead
property :id, Integer, :key => true, :serial => true, :field => 'unitsindex'
property :id, Serial
  2.2 +options[:class_name]+ is deprecated, use :model instead
belongs_to :customer_address, :class_name => "CustomerAddress", :child_key => [:customer_address_id, Integer]
  2.3 explicit use of 'in' operator is deprecated
belongs_to :order, :model => 'Order', :child_key => [:order_id, Integer], :order_type.in => ['O', 's', 'w'], you can use
:order_type => ['O', 'S'] instead.

3. Others
  model.new_record? now model.new?
  model.update_attributes now model.update

Sep 14, 2009

Merb - a bug for merb router

You can not include a number(0-9) in your controller's name if you use it with nested routes. e.g.

Here is the quick fix:

Aug 21, 2009

_why?

It really doesn't matter what his name is, what I know is I read his book, use his projects and admired him.

Be good - Why The Lucky Stiff.

Aug 17, 2009

Vim and CTaglist plugin

My ctaglist plugin stopped working after I migrated to my new MacBook Pro 13". After playing with it for a few minutes, I realized that my default ctags cmd is not correct. To have your ctaglist working, you have to use Exuberant Ctags. I am hoping this could save you some time for looking for the answer.

$> wget http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz
$> tar zxvf ctags-5.8.tar.gz
$> cd ctags-5.8
$> ./configure && make && sudo make install

You probably have to copy it over the old one if you not set the $PATH on you Mac( there is a ctags under /usr/bin)

$> sudo cp ctags /usr/bin/.

That's it, start you Vim, you are ready to go.

Aug 10, 2009

Render without calling the controller's action in Merb

I was working on a Merb project in the company, I found a common request is generate the report to view in the browser and also send the report as an attachment of an email in a cron job. Usually I have to do two parts of job, one is for the regular MVC parts to get the report in a browser. Then I have to generate the report and write it a file(html, text or pdf). Then send it out later. As you might see, there is a duplication here, I have to design the report twice. This really bothered me, why can't I just re-use the view templates which is used in the MVC. After poking around the merb-core source files, it turns out pretty easy to do that:



This is another reason I love Merb.

Aug 4, 2009

Enable/Disable bluetooth via cmd line

Since I got my new MacBook Pro 13", I found I constantly lost the connection with my bluetooth devices, like mouse or keyboard. It is so annoying that I have to reach my touch pad to disconnect the devices and re-connect them from the status bar or system preference. You'll know what I am talking about if you have the same problem as what I have. It is pretty pain.

Today, I found a command line tools for you to enable or disable the bluetooth, it is so handy. I just love it. Here is the link for blueutil.

Now, I can just issue the command: blueutil off and blueutil on, I am back on track again.