#2 楼 @linjunhalida 应该没有 downtime 啊,除非你的应用压力太大,一段时间的不响应会导致 OS 的 socket 队列过长而开始丢包。如果已经是这个情况了,那你应该前面有一个 LB 顶着,然后后端轮流升级才对。
#16 楼 @goodboyRyan 对程序员只有两种终极难题。。
md 感觉被羞辱了..
#2 楼 @linjunhalida 那感觉又像是 yield self
的用法?记得有些 API 是这样的,不知道在 block 里面能不能直接调变量..:
SomeClass.config do
some_method_in_some_class some_params
end
看起来就像是 sidekiq.....一端丢进去几个变量,另外一端取出来...区别不大?
#9 楼 @xiaoronglv -0-...要不要这么夸张.....我看到 @huacnlee 已经把 api proxy 给注释掉了...
API Proxy 的速度这样感受:
curl https://ruby.taobao.org/api/v1/dependencies?gems=rails
#5 楼 @xiaoronglv gemset 还是有好处的嘛.. 可以用 rvmrc 自动切换 gemset 环境,然后直接敲命令就是使用这个 gemset 里面的版本。如果用 bundler 的话就要 bundle exec
还有另外一个问题是 **options
是 2.0 才引入的新语法..对之前的不兼容...
这个其实关乎方法参数位置的问题。
def a_method a, b="yo", *msgs, c, key_param: "value", **options, &block
puts "a=#{a}"
puts "b=#{b}"
puts "msgs=#{msgs}"
puts "c=#{c}"
puts "key_param: #{key_param}"
puts "options: #{options}"
puts "block: #{block.call}"
end
a_method "called", "with", "lots", "of", "params", and: "a custom key param" do
"and a block"
end
产出
a=called
b=with
msgs=["lots", "of"]
c=params
key_param: value
options: {:and=>"a custom key param"}
block: and a block
..威胁投诉真管用啊
1200 要啦~
说实话没太看懂...需要更多信息。
#7 楼 @zhangjinzhu 现在不知道..反正我开始用 cap3 那会 puma 只有 cap2 的支持...所以现在才有一个叫做 capistrano3-puma 的 gem... #8 楼 @huacnlee 这个 bug 的问题就在于 puma load Gemfile 的时候是按照绝对路径 (release_path) load 的..然后 restart 时候不会刷新这个地址。上面提到的 fix 办法是在配置文件里面直接指定用 current_path 就好了..
可以参考下游侠网这种提供游戏下载的网站是怎么搞的。
#3 楼 @huacnlee cap3 的话用这个部署 https://github.com/seuros/capistrano-puma 这个 bug 我踩过...已经 fix 了。具体 fix 的办法见这行...
rbenv 还有个好处是可以通过项目根目录的 .ruby-version 文件指定 ruby 版本号
这个说不上是 form object 的坑吧?多进程多线程都会碰到这个问题..