• 殊途同归,实际上都是一个目的。 大多数时候都是 面向对象编程 和 函数式编程 风格的不同。

  • 我觉得 Elixir 或者 Phoenix 对比 Rails 更多的是代码的清晰度,还有 OTP 的加成,对于 Benchmark 性能,反倒不是那么重要了。

  • Elixir & Phoenix Conf 2016 视频 at 2016年09月29日

    2006? 😅

  • 全栈营感想 at 2016年09月27日

    不管如何,别人是自己交的 5 万块,都是自己挣得,有自己支配的理由,我们看东西也不要光看这个 5 万了,相信管理者也只是看到了文章所体现出来的正能量,这才是我们真正需要的,或许下次这样的文章在加精的过程中可以增加点管理员加精的理由什么的,写在文章的抬头,这样可以引导大家如何看待这个问题,而且这也可以说明管理员的态度。 不过现在这样的情况,其实很多人都会想,打死我也不信你没打广告。 清者自清,我还是相信本站的管理员同志的。

  • 自己造个轮子更好

  • 多那个空的是为了当你全部不选的时候不能 update 数据

  • 试试 main_app.root_path

  • @qinfanpeng to_hash

  • 额,信息太少

  • 多写点例子自己试试,比看文章有用多了,当然基础知识是必须的

  • devise 有处理数据输入并保存的功能,这样如果没有其它特定的需求,它的子类就可以直接通过 super 来调用

  • SQLite3 数据库不支持 Array 数组类型,你可以利用自定义 Type 的方式来实现。

  • 我的意思是说如果在生产环境是不会有这样的出错信息的,他是直接显示 404 错误页面,但是如果在开发环境下就是目前你看到的页面

  • 开发模式下会显示详细的错误信息的

  • irb(main):041:0> require 'logger'
    => false
    irb(main):042:0> 
    irb(main):043:0* class AuditDecorator
    irb(main):044:1>   def initialize (object)
    irb(main):045:2>     @object = object
    irb(main):046:2>     @logger = Logger.new(STDOUT)
    irb(main):047:2> 
    irb(main):048:2*     [:define_singleton_method, :send, :object_id].each do |name|
    irb(main):049:3*       define_singleton_method(name) do |*args, &block|
    irb(main):050:4*         p "define #{name}, current_self #{self}"
    irb(main):051:4>         @logger.info("calling '#{name}' on #{@object.inspect}")
    irb(main):052:4>         @object.send(name, *args, &block)
    irb(main):053:4>       end
    irb(main):054:3>     end
    irb(main):055:2>   end
    irb(main):056:1> end
    => :initialize
    irb(main):057:0> 
    irb(main):058:0* s1 = AuditDecorator.new("ruby!")
    "define define_singleton_method, current_self #<AuditDecorator:0x007f8ef12a1188>"
    I, [2016-04-07T22:44:47.403807 #2267]  INFO -- : calling 'define_singleton_method' on "ruby!"
    "define define_singleton_method, current_self #<AuditDecorator:0x007f8ef12a1188>"
    I, [2016-04-07T22:44:47.403938 #2267]  INFO -- : calling 'define_singleton_method' on "ruby!"
    "define send, current_self ruby!"
    NoMethodError: undefined method `info' for nil:NilClass
        from (irb):51:in `block (2 levels) in initialize'
        from (irb):52:in `block (2 levels) in initialize'
        from (irb):49:in `block in initialize'
        from (irb):48:in `each'
        from (irb):48:in `initialize'
        from (irb):58:in `new'
        from (irb):58
        from /Users/xiaohui/.rbenv/versions/2.2.3/bin/irb:11:in `<main>'
    
  • where 的一个蛋疼设定 at 2016年04月01日

    enable_extension "intarray", 然后使用 idx

  • turbolinks-android 来了 at 2016年02月27日

    #1 楼 @huacnlee 我准备试试看了

    App开发的时候是通过Api获取数据然后再通过App端的逻辑来决定如何显示,在根本上和turbolinks的逻辑有点类似,turbolinks通过xhr获取数据然后根据设定改变当前页面的内容,实际上也是这个模式,而turbolinks-android也只是封装了turbolinksjavascriptandroid的接口,实际上也就是提供了类似于Api的方式,

    visitProposedToLocationWithAction 决定如何处理links onPageFinishedvisitCompleted 决定收到的结果如何处理 onReceivedError 决定如何处理错误信息 pageInvalidated 自动处理更新assets

  • check_openid 的 redirect_to 那里要 return 一下

  • 我去,我已经买了,顺便请忽略这一楼!

  • #23 楼 @runup 自己用irb多试试看,对于ruby的继承链有点多的了解了以后再思考这些比较细致的问题,多看看Ruby元编程,我自己也前前后后翻了 3 遍,但是对于有些概念还是摸不透,也要用irb来验证自己的想法

    irb(main):033:0> BasicObject.instance_methods.join ','
    "==,equal?,!,!=,instance_eval,instance_exec,__send__,__id__"
    irb(main):034:0> Object.instance_methods(false).join ','
    "methods,private_methods,protected_methods,public_methods,singleton_methods"
    irb(main):035:0> Kernel.instance_methods(false).join ','
    "nil?,===,=~,!~,eql?,hash,<=>,class,singleton_class,clone,dup,itself,taint,tainted?,untaint,untrust,untrusted?,trust,freeze,frozen?,to_s,inspect,methods,singleton_methods,protected_methods,private_methods,public_methods,instance_variables,instance_variable_get,instance_variable_set,instance_variable_defined?,remove_instance_variable,instance_of?,kind_of?,is_a?,tap,send,public_send,respond_to?,extend,display,method,public_method,singleton_method,define_singleton_method,object_id,to_enum,enum_for,ai,awesome_inspect,awesome_print"
    irb(main):036:0> Class.instance_methods(false).join ','
    "allocate,new,superclass,instance_methods,private_instance_methods,protected_instance_methods,public_instance_methods"
    irb(main):037:0> Module.instance_methods(false).join ','
    "freeze,===,==,<=>,<,<=,>,>=,to_s,inspect,included_modules,include?,name,ancestors,instance_methods,public_instance_methods,protected_instance_methods,private_instance_methods,constants,const_get,const_set,const_defined?,const_missing,class_variables,remove_class_variable,class_variable_get,class_variable_set,class_variable_defined?,public_constant,private_constant,singleton_class?,include,prepend,module_exec,class_exec,module_eval,class_eval,method_defined?,public_method_defined?,private_method_defined?,protected_method_defined?,public_class_method,private_class_method,autoload,autoload?,instance_method,public_instance_method"
    irb(main):038:0> class A
    irb(main):039:1> end
    nil
    irb(main):040:0> A.ancestors
    [
        [0] A < Object,
        [1] Object < BasicObject,
        [2] Kernel,
        [3] BasicObject
    ]
    
  • 就是说 Class 的超类是 Module

  • 解决 stack level too deep 问题 at 2016年01月09日

    #30 楼 @runup Ruby 中所有的都是对象。因为 :my_method "my_method" my_method 这几个只有第三个没有具体的值 要不你再试试,你仔细看看 send 方法是做什么的

    class MyClass
      def my_method(my_arg)
        puts my_arg*2
      end
    end
    
    obj = MyClass.new
    obj.send(:my_method, 3)
    obj.send("my_method", 6)
    
    my_method = "my_method"
    obj.send(my_method, 6) 
    
    my_method = :my_method
    obj.send(my_method, 6) 
    
  • irb(main):001:0> Module.class
    => Class
    irb(main):002:0> Class.class
    => Class
    irb(main):003:0> Class.superclass
    => Module
    irb(main):004:0> Module.superclass
    => Object
    irb(main):005:0> Class.superclass.superclass
    
  • 解决 stack level too deep 问题 at 2016年01月09日

    #28 楼 @runup :my_method 和 "my_method" 以及 my_method 都是 obj.send 的参数,不同的是前两个一个是 symbol 一个是 string,第三个则需要在程序的上下文查找具体的值,那么这里 ruby 首先会查找有没有相应的变量或者方法。

  • #2 楼 @miclle

    # 如果code参数为空,则为认证第一步,重定向到微信认证
    if code.nil?
      redirect_to "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Weixin::APP_ID}&redirect_uri=#{request.url}&response_type=code&scope=snsapi_base&state=#{request.url}#wechat_redirect"
    end
    

    这里的 redirect_to 应该用 return,直接用 redirect_to 貌似无法跳转!

    # 如果code参数为空,则为认证第一步,重定向到微信认证
    if code.nil?
      return request_for_code! request.url
    end
    
  • +1

  • 华顺讲 High 了... at 2015年10月10日

    买了票也没机会去啊,能有现场直播么,能有视频么?

  • @xiaoronglv

    ~/.railsrc

    --skip-bundle --database=mysql --template='~/template.rb'

    最后一行似乎要改成 -template ~/template.rb 不然会出错