mysql,Linux,HighPerformance,ruby on Rails

2010年7月24日星期六

Rails3beta4使用Ajax的一些参考

update: prototype更新有点误解,现在已经更正。

Rails3Beta4的Ajax参考文档目前不是很多,因为版本更新很快,参考的内容很多都已经过期.完整可参考的文档少之又少.经过近期项目的经验,我想总结一下:
1, Rails3Beta4已经快接进RC,想使用ajax,直接在link_to,form_tag,form_for加上remote=> true,就能产生ajax request, Controller里加不加respond_to都会去找rjs,或js.erb.两个后缀没有什么差别,关键在于使用js.erb感觉和.html.erb统一了后缀名而以.(今天跑个demo,才知道使用js.rjs就可以调用prototype了,方法可以在ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods里找到。你可以使用railsapi.com生成的文档查看到 )
2.我在使用form_tag里加上select_tag,想使用select_tag的onchange加上submit事件来请求form_tag中的ajax,不能成功.感觉是我的思路的问题,直接使用select_tag没有remote属性,不过直接使用ujs的onchange事件里加上ajax就能控制.通过这样的体会,你会发现使用UJS确实比Rails之前的RJS更简单,更方便,实现的效果和原来的是一样的.一样可以调用contorller里的方法及js.erb.
JQuery的UJS调用参考文档多,所以大家才想办法在Rails里去掉prototype使用jquery.不然如果直接prototype,怎么使用还需要去看prototype,有点让新人不知手措.(教程是没更新的,但查文档是有helper函数,生成项目试用就可以上手。)
总结,Rails3里,ajax的使用更开放,也就是说,其实你在rails3中使用哪个框架都可以,只需要修改一个rails.js就可以了.
参考:

--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年7月16日星期五

RVM,标准配置Ruby环境的首选

rvm,快速,高效,简洁,所以你需要的优化,它全部具备。只要你有一台Linux/Mac系统,就可以在5分钟内完成安装(限制仅在你的网速)。
第一步:
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

第二步:
在你的.bash_profile,把这段放在最后一行,保证PATH里有它就可以.贴上后,新开一个terminal,然后source ~/.bash_profile就可以了。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
第三步:
安装你可爱的Ruby环境吧
$ rvm install 1.8.7
可选,第四步:
想使用就这样操作:
 $ rvm 1.8.7

想知道更多,运行这句:

$ rvm list
或者:
$ rvm help


第五步:
想把整个ruby版本作为自己默认的环境,运行这句:
$ rvm 1.8.7 --default

收工。去玩Ruby& rails吧

参考这里:
http://everydayrails.com/2010/06/28/rvm-gemsets-rails3.html
--
tommy xiao
E-mail: xiaods(AT)gmail.com

2010年7月11日星期日

ruby1.9.1对String的处理有细微差别,注意

今天在ruby1.9.2-dev环境下起Oria,报了个错:
/Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `+': String can't be coerced into Fixnum (TypeError)
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `block in port'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `each'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `inject'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/lib/oria.rb:57:in `port'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:43:in `parse_options'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:49:in `start'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:11:in `go'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/gems/oria-0.1.1/bin/oria:76:in `<top (required)>'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/bin/oria:19:in `load'
        from /Users/xiaodeshi/.rvm/gems/ruby-1.9.2-head@rails3beta/bin/oria:19:in `<main>'

心中奇怪,这昨天才用了一下没这问题啊。找开对应文件定位到:
  def self.port
    @@port ||= "Oria is easily the coolest in-memory, super-simple KVS. Cool people use it.".split("").inject(0) {|total, char| total += (char[0].class == String ? char[0].ord : char[0])}
  end

直接去irb下跑,原来作者是使用charcode加出来的一个端口,但1.9.2修正了1.8.7字符串的显示不一致问题。
原来在1.8.7下,'a'[0]出来的是ascii code,但在1.9.2下'a'[0]还是返回'a',这代码就跑不动了。
ok,了解原因后,改一行就ok了。
@@port ||= "Oria is easily the coolest in-memory, super-simple KVS. Cool people use it.".split("").inject(0) {|total, char|  total += (char[0].class == String ? char[0].ord : char[0])}

兼容1.8.7.


--
tommy xiao
E-mail: xiaods(AT)gmail.com

mac下删除ports,使用homebrew

homebrew是为rubist准备的安装管理器,所以port删除是当务之急。
search并当了一回小白鼠,成功! http://guide.macports.org/chunked/installing.macports.uninstalling.html
第一步:
% sudo port -f uninstall installed
第二步:
% sudo rm -rf \
/opt/local \
/Applications/DarwinPorts \
/Applications/MacPorts \
/Library/LaunchDaemons/org.macports.* \
/Library/Receipts/DarwinPorts*.pkg \
/Library/Receipts/MacPorts*.pkg \
/Library/StartupItems/DarwinPortsStartup \
/Library/Tcl/darwinports1.0 \
/Library/Tcl/macports1.0 \
~/.macports


--
tommy xiao
E-mail: xiaods(AT)gmail.com