Preface: this is not a general question about merge conflicts, but a very specific case that keeps bugging me. It is quite trivial, but it does amount to a (slight) hassle often enough to stand out. I am not concerned about general merging, this is just about saving a few seconds here and there for very mechanical conflict resolution, by avoiding said conflict in the first place. I am also absolutely aware that this is not a "git problem" or …
我有类似这样的代码:
MyTable.where(something: 'abc').each do |rec|
  rec.some_attr = 123
  rec.save!
end
Run Code Online (Sandbox Code Playgroud)
请注意,我MyTable只是查询和更改,不涉及关系。something和some_attr都是普通的 ActiveRecord 属性,没什么花哨的。
该MyTable模型相当复杂,具有多种各种关系。
我的问题是recs 设置了标志,所以保存时readonly我得到了。ActiveRecord::ReadOnlyRecord
解决方法是清除只读标志:
rec.instance_variable_set(@readonly, false)
Run Code Online (Sandbox Code Playgroud)
此后,保存工作正常;不过闻起来有鱼腥味。
据我所知,ActiveRecord 在某些情况下会显式地使返回的记录只读(例如,对于没有明确更新某些内容的 1:n 关系),就像您可以不更新 Oracle 中视图的某些属性一样。那么什么会促使它使查询本身的“基本”记录成为只读呢?我认为这总是可以进行简单的更新。
我能找到的唯一文档是 API readonly?:
通过具有捎带属性的联接加载的记录将被标记为只读,因为它们无法保存。
什么是“搭载属性”?
有没有办法禁用readonly查询本身中的标志?find和其他方法似乎有一个readonly选择(尽管尚不清楚是否readonly: false可以接受,或者是否仅适用于readonly: true使其他可写记录只读的情况)。我尝试过但where没有成功。
来自How to Replace find by readonly on newer Rails? 的解决方案 不起作用:
MyTable.readonly(false).where(something: 'abc').each do |rec|  # seems …Run Code Online (Sandbox Code Playgroud) 我需要自动滚动重启 kafka 集群(3 个 kafka 代理)。我可以轻松地手动完成 - 一个接一个地重新启动,同时检查日志以查看何时正常(例如,当新进程加入集群时)。
自动执行此检查的好方法是什么?我如何询问代理是否已启动并正在运行、是否已与其同行连接、所有主题是否都是最新的等等?在我的重启脚本中,我可以访问指标,但坦率地说,我并没有真正在那里看到一个可以让我清晰地了解的指标。
另一种方法是询问一个好的“就绪”探测是什么,它不只是检查一些 TCP/IP 端口,而是查看实际的服务器......
params.require(:xxx).permit(:a, :b, :c)为我工作的中途,就是如果params[:xxx][:d]有,它被删除permit.我想有一个例外.
要么我没有找到相关文档,要么缺乏文档.在这种情况下,我设置了什么选项(我希望有一个全局设置)来获取异常?
Array.inspect 以平线返回其输出:
aoa = [ [1,2,3], [4,5,6] ]
puts aoa.inspect # => [[1, 2, 3], [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来获得缩进的输出?确切的格式(例如,第一次之后是否有换行符[)对我来说并不重要.我只是想让它更具可读性.
比较Perl:
  DB<2> print Dumper([[1,2,3],[4,5,6]])
$VAR1 = [
          [
            1,
            2,
            3
          ],
          [
            4,
            5,
            6
          ]
        ];
Run Code Online (Sandbox Code Playgroud)
解决方案也应该支持哈希并优雅地处理其他事情.
在OpenShift 3.9中,我在Web控制台中看到了许多模板("添加到项目").这些模板由公司的一些中心部门提供; 即它们不是我的OpenShift项目的一部分(我有完全的管理员访问权限 - 但不是OpenShift/Kubernetes集群本身).
有没有办法通过相同的模板描述列表oc?具体来说,我想使用oc process $INTERNALNAME,但模板的技术名称似乎不容易通过GUI访问.在过去(OS 3.6)中,通过检查GUI的HTML可以很容易地访问它,但在3.9中它们似乎已经切换了,我似乎再也看不到它们了(至少不容易 - 我可以在浏览器中窥探网络流量,并检查一些内部的AJAX请求,但这样做有点舒服......).
oc get templates 什么都不做,因为模板是外部的而不是我自己的项目...
ruby ×2
activerecord ×1
apache-kafka ×1
conflict ×1
git ×1
inspect ×1
merge ×1
openshift ×1
pretty-print ×1
readonly ×1
templates ×1
upgrade ×1