Archive for ‘Merb’ Category

27
Dec

custom exceptions in merb

在开发应用过程中难免需要根据实际情况自定义一些异常处理机制,这方面Merb已经将底部的架子为我们准备好了,我们只需要简单的在此基础上进行扩展就可以搞的很舒服。
Merb默认生成的Application会提供一个Exception的Controller,并包含了两个样版异常NotFound和NotAcceptable。现在我们添加一个自定义的异常在这里,假定名称为NotExists,并为其创建对应的View。
在Action中调用
def show
product = Product.find(params[:id])
raise NotExists unless product
[...]
end
这时会报错,称并不存在NotExists常量,Google了一下并没有找到合理的解释,直接看了Merb的源代码才发现,自定义异常不是这样的用法。
在Merb里如果要自定义异常,需要将自定义异常继承自一个Merb自身已存的异常,比如这样
class NotExists < Merb::ControllerExceptions::NotFound ; end
并且需要在使用该异常的Controller里进行声明(放在Application里自然会是一个不错的选择),再跑一下上面报错的程序应该就可以得到正确的结果啦~ BTW:为了这个我可查了好一会资料 :)

18
Dec

upgrade merb cause nothing to render

今天看到Merb有版本更新就顺手更新了一下,正好要写一个关于RESTFul的小脚本,随即生成一个新的App,但不知道怎么搞的不管是手工生成的Controller还是用resource生成的资源都无法正确渲染内容.
在测试过程中为Action添加了before,end过滤器,过滤器内中的日志反馈得知前置过滤器正确执行,后置过滤压根没反应,Action里的日志也一样默默无闻,郁闷,找了半天的原因,愣是没发现,后来直接上Maillist发现也有人提类似的问题.有人反馈是merb-action-args引起的问题.随即在dependencies.rb中将它注释掉,重启App发现OK了,问题确实在此.
看起来这个小玩意还不完善,我也顺手把测试环境补在了Maillist里,希望社区尽快有相关的patch出来,以下是测试环境
Ubuntu 8.10
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
merb (1.0.6.1)
merb-action-args(1.0.6.1)

20
Nov

comparison of common command with Rails and Merb


16
Nov

cheat datamapper

DataMapper, the ruby object relational mapper
website: http://www.datamapper.org
git: git://github.com/sam/dm-core.git
mail: http://groups.google.com/group/datamapper
now: http://www.twitter.com/datamapper
Setting up a Connection
DataMapper.setup(:default, “adapter://user:password@hostname/dbname”)
supported adapters: mysql, sqlite3, postgres, sqlite3::memory:
additional adapters are in dm-more, (couchdb, rest, imap, [...]

10
Nov

install Merb 1.0 on Windows

早期的Merb在Windows上安装是件很恶心的事,缺这少那的,很是不爽,Merb 1.0也正式发布了,今天正好系统重做了一下,在干净的环境下试了一把,Merb 1.0可以正常安全与运行,相比之前版本的安装好些了,但也不省事,必要安装的Gem包还是一大堆,啥时候能和Rails一样安装Rails会自动把相关包一并安装啊,或许这就是Merb可定制化这样的特点对于我这个懒人的不适应吧!
安装必要的Gem
extlib
erubis
json_pure
rspec
rack
mime-types
thor
ruby2ruby(ZenTest RubyInline sexp_processor ParseTree)
templater(diff-lcs)
haml
mailfactory
dm-core(addressable data_objects)
dm-migrations
dm-timestamps
dm-aggregates
dm-validations
dm-sweatshop
dm-types
do_sqlite3
注意:括号里的gem是被附加安装的,可以不用手动安装

09
Nov

use autotest on merb with rspec

首先要在确保Merb App的$approot$/autotest/discover.rb文件中加载了”merb”, “rspec”。
discover.rb内容如下
Autotest.add_discovery { “merb” }
Autotest.add_discovery { “rspec” }
安装必要的依赖包
$: sudo apt-get install libgtk2-ruby libnotify-dev
$: wget http://rubyforge.org/frs/download.php/27134/ruby-libnotify-0.3.3.tar.bz2
$: tar jxf ruby-libnotify-0.3.3.tar.bz2
$: cd ruby-libnotify-0.3.3/
$: ruby extconf.rb
$: make && sudo make install

09
Nov

Merb 1.0 Released

Merb - a much heralded, highly flexible Ruby-based Web application framework - has reached version 1.0 after two years of development. Congratulations to Merb’s creator, Ezra Zygmuntowicz, and to the large group of associated developers (such as Yehuda Katz and Matt Aimonetti) who’ve kept adding features and pushed Merb forward to be a significant alternative [...]

    About

    Tag Cloud