俺来补充一条: 持续锻炼。
虽然是个穷货,但每周也会抽出 5 个小时时间锻炼
判断发帖频率?
rubykoans, 直接上手敲
借楼提问不太符合规范,建议自己开一个帖子
wrong number of arguments (given 2, expected 1)
这个错误大概率是由于 ruby3 的关键字参数特性修改引起的,这个 gem 应该还不支持 ruby3
把 web server 配置成多个实例呗。想要几个进程都行
attr_reader :content
生成了一个 content 方法,在没有歧义的情况下 a = content.gsub 实际是 a = self.content.gsub 的简写,然而当 content 出现在赋值符左边时,content 被解释成一个变量,content = content.gsub 基本等价于content = nil; content = content.gsub
.
若非要保持同名的局部变量名,应显式写明 self, 即content = self.content.gsub("1", "2")
另外,即使使用attr_accessor :content
生成了content=
方法,content = content.gsub 中的 content 也是个变量
我在 rails6 对接第三方数据库也遇到了这个问题,使用 select as 依然会报错。因为不关心冲突字段的值,所以最终用了个折衷方案,忽略冲突的字段 self.ignored_columns = [:conflict_columns]
(1..10).step(2)
把界位符包在单引号中即可
puts <<'STR'
"c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools"
STR
不过你的 heredoc 中的内容为啥还要加引号?
豪气!
非 rspec 用户,俺来写后面那截 data 断言的话,会直接写成
data = res[:data]
expect([data.size, data.first.name, data.first.id, data.second.name, data.second.id]).
to eq([2,'Jay', 1, 'Jone', 1])
写成最开始那样也很 ok, 可读性杠杠滴。
后面新封装的 DSD(Domain Specfic Dialect, 俺生造的词:领域专属土话,就是外人不咋好读,不咋好理解的意思), 感觉这个例子里没看出来代码量少了多少...
最后,做了复杂的封装,老哥应该还要写段 rspec 测试一下自己的 rspec 封装... ( 逃~)
其它可读性不谈,你把 not_to 给漏掉了
我刚学会元编程的时候也喜欢这样写骚代码,时间久了反而更偏爱朴实稳健的写法
换个思路,把服务器放在同一父域名下
ActiveRecord::Relation 是个惰性执行的 sql,执行 to_a 或其他 Enumerable 方法时才会真正执行 sql。如果它是结果集的话,怕是不太好实现链式查询。
在结果集里插入数据再排序,试试转成数组再在内存里手动处理。
试试 left_joins
非常耗时就该异步执行了撒
task 的业务逻辑放到 controller 里去调用
rubymine
不过你这个问题只需要点开错误页面上的 full trace 就能看到完整的错误栈
实际上大家都被表面上的错误信息误导了,的确是 ArgumentError, 但并不是截图中给出的那行触发的,而是 gem 内部的代码触发的 (我也不知为何 rails 没有打印完整的错误栈).
15 楼截图中显示是 will_paginate 这里报错,实际触发这个错误的是will_paginate 这个 gem 中的 will_paginate_translate 方法,translate 这一行抛出的错误
translate 的方法签名是translate(key, **options)
, 而 will_paginate_translate 在调用 translate 时,传入了一个 symbol 和 hash
translate(key, options.merge(:default => defaults, :scope => :will_paginate))
在 ruby2 中,这并没有错,然而楼主用的是 ruby3. 需要写成这样才能正确
translate(key, **options.merge(:default => defaults, :scope => :will_paginate))
楼主最开始描述的问题应该也是这个原因造成的,建议直接将 ruby 换成 2.7 解决。
你这段错误代码根本没提交上来吧?你项目仓库里没有 index.html.erb 文件
ruby 中估计没有能让第二种代码运行的办法,有这种办法俺也不用。
在 python 和 js 中,第二种代码是能正常运行。然而这种特性,估计也只有面试能用到...
2.7 后的写法:arr.map{ _1[:a] },比你想要的 arr.map(&:[:a]) 还要简洁一些
不懂就问:老哥 啥是“Value integrated systems”
给楼主另一个参考,我的环境在 wsl1 里,ruby2.7,没啥 jit 之类的,跑了 8s;python 3.9,跑了 28s,跑 python 的时候慢的我一度怀疑写的代码是不是死循环了
去掉数据库的 io 时间对比应该会明显。以前在 mini(i5)上跑过测试,ruby2.7 rails6,只响应固定的 json,单核能跑到 1000 左右的 rps。不过把 rails 放 docker 容器里就只有 600 左右的 rps,而且容器内 puma 进程 cpu 怎么也跑不到 100%,也不知道是啥原因
功德无量!