around_action :lock_shelf
before_action :check_shelf_availability
private
def lock_shelf
@shelf = ...
@shelf.with_lock do
yield
end
end
创建 book 的时候 lock shelf
https://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html
很不错。
要实现阻塞轮询,那么根本不用 worker:
def run_jenkins
white !jenkins_ready
sleep 60
end
render
end
这里有几个问题:
你还是先说说用户场景是什么?
PS: X-Y Problem http://coolshell.cn/articles/10804.html
两个问题:
已经在做了~
sidekiq
ActiveJob 用 wait 参数延时执行,任务末尾需要轮询的时候 enqueue 自己。
这种不一致的数据迁移我会单独写一个脚本,migration 只管模式迁移。
我习惯一个迁移包含一个任务,顶楼情况,增加 user 表和添加 user_id 是一个任务(增加 User Model),去掉 default value 是另一个任务(这跟 User 有关吗?)。
楼主不会真的贴了密码出来吧?赶紧改密码。
不要依赖 turbolinks:load 了,https://stimulusjs.org/ 是最适合 Turbolinks 的做法。
https://github.com/turbolinks/turbolinks#attaching-behavior-with-stimulus
看了下源码 MiniMagick::Image.open 用的是 open-uri 实现,可以在终端自己试试用 open-uri 打开链接看看。
另外代码效率比较低啊,每次渲染都要下载图片解析,activestorage 本身保存了图片 metadata 的。
IDE 可以读 schema.rb。
这样塑料小人会不会化掉……
这几家公司都是有人在核心维护组的,没有的话还是建议用稳定版。
自己鼓捣就 ssh forward agent 咯。
另外几个项目可能配置了 deploy key,同事机子可能配置了 ssh forward agent,不能排除服务器访问不到 repo 的问题。
话说这问题不应该问同事吗?
cap 部署需要部署时服务器可以访问 git repo,可以选择在服务器上配置一个专门的 deploy key,或者通过 ssh forward agent 使用本地的 key。
对我来说依然不觉得类型检查有什么必要,过去遇到的 Bug 几乎都跟类型没什么关系,只是可选的那就留待观察好了。(真香警告)
为了一个字体增加首页几 M 下载量,说不定用户还是手机流量,真的值得吗?不如跟客户沟通一下,设定几个字体 fallback 到本地字体。
这是 Rspec 引进不必要的复杂的一个体现,在 Minitest 里面定义自己的断言只需要定义 Ruby 方法:
def assert_what_you_want(*args)
# do something
assert(except, actual, message)
end
卧槽,怀疑攻击者盗取了维护者的 gem 发布权限,发布了一个带后门的版本。
看你写了这行 #result.gsub!("\n", '') ,是不是遇到换行。
puts result.inspect 打印看看有无换行。
另外 Base64.strict_encode64 是生成无换行格式的。