已投,请问本次大会主题讲师们的分享稿在哪里可以下载到?
周边交通便利,无 996,领导人很 nice, 定期星爸爸,欢迎小伙伴加入
应该是只能自己手动修改文件的。 你可以阅读下官网上有关 rails command 部分的内容:https://guides.rubyonrails.org/command_line.html#rails-generate。Google 了下,stack overflow 上倒是有人提出了跟你一样的问题,得到的回复也是手动。https://stackoverflow.com/questions/9537522/rails-generate-a-controller-with-different-inheritance-than-application/9537559#9537559
如此耐心的解答,谢谢!!最后是通过@attributes.fetch_value(“name”) 得到的,是吗?原谅我比较小白,我很好奇,您是如何执行这段代码的?我当时看这块的时候,还在想着如何调用这个 method_missing, 把 name 作为参数传过去,然后看它到底是怎么调用的,类似设置断点 binding.pry,然后 next, next,可以看到一步步做了什么的那种,但是我在终端使用 pry 的$完全没有效果,因为.name 不是一个 method。常规下,如果一段代码调用了 method_misssing,请问我可以通过什么方式查看到它具体的调用步骤?
谢谢解答!好像比之前明白了一些。其实我好奇的就是 rails 是如何通过 method_missing 的 fallback 来让 user.name 返回正常值的,不过实在水平有限,看源代码看的懵逼。不纠结了,先记着,说不定以后会懂的,谢谢您的回复
不 include UserAddon 时,使用 undef_method :name 会报错,显示 user 没有 name 这个方法,如果 include UserAddon 和 undef_method :name 都注释掉,那就跟普通的 rails 对象一样了,有 name 和 name=,我这里只 undef_method :name 了,对 name=没有影响的。上面的代码不变动,进入 rails console:
user = User.first
user.name
# => "admin"
user.name = "admin2"
user.name
# => "admin2"
name= 是正常的,执行 user.methods.include?(:name=) 也返回 true
有一点疑惑,正好最近也部署过 5.2,在 config/deploy/production.rb 文件中,楼主可以试试把 ssh_options 部分删掉,应该也可以跑起来的。
我也遇到了同样的问题,请问最后是如何解决的?
这个提的好,好的,我晚点加上去
昨天刚去面试过的小伙伴来报个到!氛围很赞!顶一个!面试官很 nice,可惜自己基础薄弱,等我好好把基础的坑填了,再去申请
,感谢楼主分享的 gem!一个小建议,README 英文版有些拼写和语法错误,建议楼主抽空改改,那就更完美了
感谢推荐,已经看过《元编程》,很精彩。建议很赞,代码风格还比较小白,会注意改进的
学习了
学习了。不是很懂 AOP 风格的编程,只知道 prepend 很强大,例子里面的输出结果,通过祖先链可以推断出来。 比如最后的那个 C A B 的输出。 Bar 的祖先链是
module B,module A ,class Bar,
调用 Bar.new.foo 时,沿着祖先链开始找 foo, 从 module B 开始,找到了 foo, 里面用了 super,也就是要调用它的上一个 module A 中的 foo, 而 module A 中的 foo method ,也使用了 super,沿着祖先链继续,A 的上一个是 class Bar,所以最后方法调用顺序会是:class Bar 的 foo, module A 中的 foo, module B 中的 foo,假定 super 都是放在最后,调用的就会是 module B 中的 foo,module A 中的 foo,class Bar 的 foo,输出的会是 B A C。prepend 搭配 super 很强大,不过 super 的位置也挺重要的。
作为小白的我表示已经懵逼了,看不懂,要是我稍微懂点 PHP,应该能看懂点……受教了,感谢 PHP 大牛关于 autoload 的分享! 另,extend 确实会存在猴子补丁的情况,不过相近的 include,prepend 也会存在。Ruby 中没有 class_method, 它的类方法其实是单件方法,可以用类名调用 singleton_methods 来查看。
厉害!我看到它自己定义了一个 autoload 方法,但是没细看里面的代码,再看,发现是覆写了 autoload,method 最后一句是
super const_name, path
这个应该就是调用了 ruby 本身的 autoload。给高手点赞!
哈哈,ruby China 上收到的第一个赞,小激动~
这样说会不会就统一了?不管是对象还是类,使用 extend,module 中的普通方法都成为了它们的单件方法,因为类方法也是单件方法的一种。