#7 楼 @serco 找到了修改这行的 commit: 387013
关键还是在于他的测试用例,他想做的是在一个嵌套的 #with
中可以不用重复的 pop 出新连接。虽然不知道为什么要这么设计,但是在这个设计里面这个代码是合理的
#9 楼 @luikore 你这个写法确实一下就看懂了,不过我的本意是想学习下 ConditionVariable 的用法才找到的这个帖子。。。。现在我还是对这个类有点摸不着头脑,不知道啥时候用得上,也不知道为什么 connection_pool 这个库会用这个玩意..
嗯。。然后你这个代码果断在所有版本上 Pass 了,除了 1.8.7 没有 Fiber 这个玩意以外: https://travis-ci.org/crhan/ruby_condition_variable_test/builds/80104965
对 ConditionVariable 也有一点疑问,然后我找到了之前的一个老贴 关于 Ruby 线程之间控制的一个问题 接着对贴子里 7 楼 的代码做了一次测试,发现结果也不及预期,各位也可以看看 https://github.com/crhan/ruby_condition_variable_test
#7 楼 @long_chn 你这个代码不稳定,在不同 ruby 版本上得到了不同的结果。这段代码在 Ruby 2.0.0 版本上的稳定性最好,运行十次平均有 7 次能得到预期结果,三次不行。2.2.0 版本得到的结果一次都不满足预期,具体的测试代码见此: https://github.com/crhan/ruby_condition_variable_test
没看明白的是为什么在 ConnectionPool instance 里面还要整一个 stack 出来放 connection 呢?是为了防止多次运行 checkout 吗?
#57 楼 @string2020 把直接写 db 的方式改成写 log 然后用 fluentd 写入 influxdb 的方式,不必保证高可用,influxdb 或者 fluentd 挂掉最多就是统计数据损失,对业务没有影响
从我的使用经验上面来说,mysql 的主键还是保持默认 int 比较好,对数据迁移什么的比较友好,如果真需要 uuid,不妨切换到支持更好的 postgres 或者 mongodb 吧。
非常赞。。。我也用起来了
有个更优雅的方案,参考 http://bundler.io/v1.5/bundle_config.html
Gem Source Mirrors
If your environment contains a local mirror of the rubygems.org server, use the mirror.URL configuration option to supply the URL of the mirror. At that point, Bundler will download gems and gemspecs from that mirror instead of the source listed in the Gemfile.
$ bundle config mirror.https://rubygems.org https://localgems.lan
最后的效果是这样:
$ cat ~/.bundle/config
---
BUNDLE_MIRROR__HTTPS://RUBYGEMS.ORG: https://ruby.taobao.org
在 Gemfile 里面写官方源,然后本机做一下对应的 bundler 配置,本机再执行 bundle install
的时候就去淘宝源了。但是部署的时候因为没有本机的 bundler mirror 配置,所以就去官方源下载了
PS: 你当然也可以反过来做,在 heroku 上面配置 bundle mirror config
让你们的 dev 去做 ops 就行了。。。这就是 devops。。。
我这么说的原因是你几乎很难找到现成的 devops。。。
好像中国访问 rubygems.org 是指向东京节点的?
自顶一下。。。。花了一整天时间反复打包六十多次才梳理出来的最满意的 spec,现在还提供了 RH 系的下载,求赞。。。
因为 VPS 虽然可以 DIY,但是很难做自动扩展(因为部署流程没有固化下来)。。这个是我现在看到的 PaaS 最重要的优点
#56 楼 @layerssss 别担心这么多,如果你有这个担心的话,学 python 就行了。。有很多东西,使用的人多,并不说明它‘好’。干活别在意使用的技术,关键是解决问题,再然后是别让自己成为单点(用小众语言容易单点)
先学 regex..... 比如这个 30 分钟
....最小可用产品?
brew update 就可以啦~~
感觉又回到了我的某个论调..."运维是成本和技术上的平衡".......套过来说的就是与其花时间研究如何在 ruby 里面 reload(全部 reload 相当于重启,部分 reload 则不知道哪些需要 reload, 以及 reload 的顺序), 不如在更通用的层面上统一解决这个问题 (比如大集群分批重启,或者小集群使用提供的无缝重启功能)
还是放阿里云呗............骂归骂...日子还是要过的..
#24 楼 @Peter 你可以试试看。成功了告诉我,反正写着也没事,不纠结这个。
不过我怀疑不写会有问题,比如你看这里 https://github.com/sstephenson/rbenv/blob/13a474c4e9c3305179b364723349fc49b3e935e3/libexec/rbenv#L39
if [ -z "${RBENV_ROOT}" ]; then
RBENV_ROOT="${HOME}/.rbenv"
else
RBENV_ROOT="${RBENV_ROOT%/}"
fi
export RBENV_ROOT