• .......

  • #16 楼 @CoffeeDeveloper 你可以考虑去 北京 上海 杭州 等 Rails 公司比较多的地方,如果你因某些原因不能离开现在的城市,那么只能建议你自己利用业余时间学习 Rails 啦。

  • #3 楼 @hooopo 呵呵,又是元编程和 Rails 源码的话题。 我只读过一点点源码, 每当我好奇某些功能的实现机制的时候, 我就会通过 CTags 切换到 Rails 源码中,看一会。 有些功能实现的很复杂,看一会,看不完,就会需要很长时间。

    建议楼主,有针对性的去阅读,这样没那么枯燥。 起初,Ruby 语法不是很熟,看源码的时候,就会很吃力, 但是,这也是一个检验自己 Ruby 语法掌握程度的机会, 当知道自己那些语法不懂后,再主动去学习 Ruby 语法, 然后再回来接着看。 反反复复一段时间,语法就不再是问题。

    我觉得,当语法不再是阻碍的时候, 看 Rails 源码的时候,最大的困难就是, 有些功能的实现的逻辑比较复杂,需要有耐心,慢慢研究。

    还有,最麻烦的就是, 我想进入某一个函数的时候, 我都用 CTags 在源码中 切换, 因为函数和类名经常出现重复。 感觉有些时候,很不方便,

    比如:

    def belongs_to(name, options = {})
      Builder::BelongsTo.build(self, name, options)
    end
    

    以上代码中我想查看 build 函数的源码, 我用 CTags 一查列出来 20 多处 build 函数的定义, 我一个一个在里面找,效率很低, 很影响节奏, 你们有什么好办法吗?你们平时都怎么看?

  • 做 Web Rails 综合的优势 大于 ASP.net。 Ruby的语言也很强大,不过和C#相比,重构能力比较弱,但是其它方面都很强。 我是从 C# .net winform wpf 转到 Rails 上的。 我建议你去找一家专门做 rails 开发的公司, 因为利用业余时间学习,精力有限,进步的很慢了。

  • 中断的本质是什么 at 2012年08月15日

    为什么,为什么要在 ruby 坛子里面, 讨论这么底层的问题,我根本就看不懂。

  • #11 楼 @kenshin54 希望你的家人早日康复

  • #8 楼 @kenshin54 肿么啦?

  • '以后大家就不用修改 gem remote 了' 这是个好消息,太爽了!

  • #12 楼 @hysios “但一般生成的 id 都会存储起来,以用来验证的” 我没明白你的意思.... 这个 id 是指 UUID 还是 传统的数据库 ID? “以用来验证的”验证什么,唯一性吗?

  • #10 楼 @hysios 呵呵 让我想起了 2 8 理论

  • #8 楼 @hysios 有时候,无法验证该序号已经被使用。

  • 以前做 MIS 系统,当数据库的记录,需要一个全局唯一标识的时候,就用 GUID。 这个情况尤其适用于,多个数据库的数据进行合并的时候。 ID 只能保证记录在一个数据库中唯一,但是不能保证在其他数据库中也唯一。

    还有 C++ 的 Com 接口,也需要一个 GUID。 Windows 注册表中,全都是这些东西。

  • UUID 又名 GUID

    理论上有重复的可能性, 但是这个可能性非常地低, 低到,通常情况下,可以忽略不计。

    细节如下:

    GUID 在空间上和时间上具有唯一性, 保证同一时间不同地方产生的数字不同。 世界上的任何两台计算机都不会生成重复的 GUID 值。

    由以下几部分的组合: 1 当前日期和时间,UUID 的第一个部分与时间有关,如果你在生成一个 UUID 之后,过几秒又生成一个 UUID,则第一个部分不同,其余相同。 2 时钟序列。 3 全局唯一的 IEEE 机器识别号,如果有网卡,从网卡 MAC 地址获得,没有网卡以其他方式获得。

    http://baike.baidu.com/view/1052579.htm http://baike.baidu.com/view/185358.htm

  • 楼主,我之前没有完全理解,你的意思,甚至我现在还有些不理解。 不过我的答案很简单,“不知道”

  • Rails 其实有点像 Delphi. at 2012年08月07日

    #42 楼 @bhuztez 这句话有点伤人。

  • Rails 其实有点像 Delphi. at 2012年08月07日

    如果要拿 MFC 和 VCL 比,(虽然我觉得他们不是一类框架) 那么我觉得 MFC 就像是 塞班,VCL 就像是 iOS。

  • Rails 其实有点像 Delphi. at 2012年08月07日

    #37 楼 @fenprace 应该可以, 不过虽然,define_method可以做到代码高亮, CTags 依然失效。

    元编程 感觉就像 C++ 中的 模板 和 宏, 虽然功能极其强大,但是副作用也非常强大。

    MFC 很烂的一个重要原因,就是宏用的太多了, 使用宏以后,代码量虽然减少了,但是可读性却下降了(人类根本无法读)。 而且宏代码也无法调试。

    元编程和宏实在是太像了。

  • 考考你的 Ruby 基本功啦~~ at 2012年08月05日
    h[:x] ||= 10 # call []=
    h[:x] ||= 20 # not call []=
    
    h[:y] = h[:y] || 10 # call []=
    h[:y] = h[:y] || 20 # call []=
    
    h[:z] || h[:z] = 10 # call []=
    h[:z] || h[:z] = 20 # not call []=
    
  • 考考你的 Ruby 基本功啦~~ at 2012年08月05日

    挺有意思的

  • 考考你的 Ruby 基本功啦~~ at 2012年08月05日

    我是先执行 再想,呵呵

  • Design Board at 2012年08月04日

    看了视频,的确不错

  • 你可以看一下button_to的文档 https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/url_helper.rb#L256

    button_to 生成了一个form 而不是 a 你可以看看你的程序生成的 html 代码。

    你可以尝试 传参 改变 form 的 method 属性,改成 get

  • Rails 其实有点像 Delphi. at 2012年08月04日

    #27 楼 @zw963 对不起,一不小心,就歪了。

  • Ruby 不讲究切面编程吗? at 2012年08月04日

    #27 楼 @hooopo 谢谢你的推荐,看了一下,挺不错的,也是一个不错的选择。

  • Rails 其实有点像 Delphi. at 2012年08月04日

    #25 楼 @hooopo 3 个极其相似的函数 写 3 遍,的确很罗嗦, 而且维护起来也是问题,也不够 DRY, 而且这样的函数还同时有 3 个,我理解作者的初衷。

    但是我依然认为,即使如此,也不应该用class_eval, 因为class_eval不是最好的解决方案, 我觉得,可以写 9 个函数, 每个函数里面只有一行代码,只是参数不同。 我认为这才是 更优雅的解决方案。

    还有你为什么不用 Ctags,多好用啊? 有了他,你根本不用花时间思考,这个函数在什么地方, 因为,你可以直接跳过去,省时又省力。

    还有class_eval的代码没有高亮, 程序员喜欢高亮。

  • 1 sudo gem install passenger 2 sudo passenger-install-nginx-module 3 passenger start

    感觉不错!

  • HEAD 不过要具体看,你要用 git 的那个命令。 比如,你可以看看 git help push git push origin HEAD A handy way to push the current branch to the same name on the remote.

  • Ruby 不讲究切面编程吗? at 2012年08月04日

    #20 楼 @ruohanc alias_method 第二次 抛出 stack level too deep异常的确是个问题, 如果说要实现的很复杂,我觉得 可以考虑 楼上 #3 楼 @cxh116 的建议 ActiveSupport::Callbacks Log 这个需求,可以考虑观察者模式,也可以用 ActiveRecord::Observer 我们就是用 ActiveRecord::Observer 实现的 log,前提你用的是 Rails。

  • Rails 其实有点像 Delphi. at 2012年08月04日

    #23 楼 @hooopo 我认为,就这个段代码而言, 如果为了 DRY,而使用class eval , 是不是有点过了,我觉得不值得, 完全可以展开写。

    作为一个框架,如果其目之一, 不是让程序员快速定位到源码的话, 那么,我认为他不够友好。

    虽然这个问题不是很严重, 但是这是个原则问题。

    另外,你真的觉得 Ctag 不重要吗? 那你平时怎么查源码,grep? ack? document?