用 RubyMine 在 Project 导航里找 Libraries 就有了嘛。。。还能临时性的修改下源码
看你干什么了,已经执行到 rack 层就很靠后了,比较普遍的使用 hook 的需求是类似重载 Gemfile、强制 AR 打开、关闭连接等操作,也都是通用需求(涉及热重启还有 CoW 优化),但必须在 Web 容器这层来做
puma 文档里有的
对的
两天 54 回复了... 很多都不是长出来发帖的同学... 所以... 没有衰退...
我用过蓝牙版有一年时间,没有问题,不过蓝牙版的手感和有线的不一样,不太喜欢。
蓝牙键鼠不稳定应该是 macOS 的锅,除了官方那一系列,其他牌子的都会一定程度有问题,另外 W1 芯片的蓝牙耳机也有很影响使用的问题... 在 Mac 上装 Win 都没那些事的
个人习惯嘛... 我喜欢的 Tactile Pro 跟静电容的手感基本相反的... 而且 Matias 一把不到 700,超便宜呀,87U 1799... 我还有一把 104UG-HiPro 2400 多...
有把 87u 纯看造型复古入的,比 hhkb 看着正常点,1700 多,用一阵觉得不喜欢静电容的手感
然后还要去掉 Null...
一种可能性而已... 心理素质不佳也算减分项呀
噗 楼上有位去人多的聚会就会😂
环境不同,紧张,临场发挥失常
和求职者心理素质也有关系
不知道要怎么说了。。。 @kgen 对这种事怎么交涉有啥经验么...
这答复也是无懈可击,没法反驳...
我在家(北京联通)测试东京 1 机房比 2 快了快十倍... 但是 1 不让迁进去了
你更新到原文上嘛...
继续抛砖引玉哇
必须啊... github flavored markdown
来啊
是的,从另一方面来讲,role.permissions = {read: false}
这样做改变了 permissions
的类型是很合乎逻辑的行为,Ruby 鸭子类型嘛!
但是,write_attributes
等行为也会改变 permissions
的数据类型,这就涉及到 ActiveModel 的相关的原理了,他底层是用 public_send "#{attribute}=", val
来实现更新数据的行为,所以这里有抽象泄露。
总之是个比较高级的特性了,用好很强大,提另一种用法,来自 Redmine: https://github.com/edavis10/redmine/blob/master/app/models/role.rb#L77
但是需要注意的问题也很多,这里有抽象泄露,得对 ActiveModel 有一些了解才能正确实现,提一种坑
class Role < ApplicationRecord
def permissions
@_permissions ||= Permissions.new read_attribute(:permissions)
end
end
role = Role.new
role.permissions.class #=> Permissions 这是我们期望的
role.permissions = {read: false} # 或者 role.update_attributes permissions: {} 前端表单提交可能会这么写
role.permissions.class #=> Hash 注意!
默认是 YAML,你发的文档有提的。
他不是不推荐,这里确实有坑,举个例子,你可以持久化成 JSON,但是 JSON 和 Ruby 的数据类型没法一一对应,没有考虑到这点(主要是说 Coder 要处理好类型转换,包括字段为 nil 之类种种边界情况),就会出问题,所以在使用的时候要小心。
这个不冲突的呀,serialize
只决定把某个字段映射成什么类,最后持久化成什么样是 Coder 来控制的,存成 hstore 没有任何问题
况且,serialize
可以把字段映射成一个具体的类,可以有效的封装状态行为验证等等
想它的价值得把存储数据和应用数据分成两件事来看待
效率可能低,但是功能非常强大,serialize
只是一种标准实践,封装了形如
class Role < ApplicationRecord
def permissions
@_permissions ||= Permissions.new read_attribute(:permissions)
end
end
这种将某字段作为虚拟模型的模式,那能做到多强大就看需要和想象力了
Rails 只是为一些简单场景(比如数组、哈希)做了开箱即用的实现,Rails 推崇 PG,还有 PG 支持 Array 这些数据类型比 Rails 提供这方面支持可晚了一些,这里有点历史原因在的
store
和利用 hstore
之类的数据库特性不冲突的,序列化和反序列化是由 coder
完成,可以自己定制
没错的,他说 ==
等价于(Equivalent) <=>
所以后边就全用 <=>
来举例用法了,Ruby 为了让你用着爽,为很多方法提供了常见的别名
(通过 alias_method
),典型的还有 count
、size
、length
,Rails 里也有不少,在文档上,就取其中一种来做示例了