• 这篇文章讲的啥玩意。。。。

  • "/([A-Z]\d){5}/匹配首位是大写字母,后面 4 个是数字的字符串" 这句话匹配"A12345"? 还是"A1A1A1A1A1dfghj"

  • #7 楼 @ch3n 恩 好的 我好好研究一下,谢谢

  • #4 楼 @adamshen 那么是否可以理解为 passenger 在调用 rack 的方法,继而接着将数据流传入 rails,实质上就是在执行 ruby xxxx.rb 的过程,就像是在调用 shell 脚本那样? 那为啥在 passenger 的官网上,解释 rails 的时候,用的是 load code of rails 这种说法?

  • #1 楼 @ch3n

    1. “自己常驻内存”,“自己“指的是 passenger/thin/unicorn 这类 app server 吗?
    2. 我看过一些资料,像 passenger 这种用 C++ 写的中间件服务器,在自己启动的时候,就会把 rails 的 code 加载到自己的进程空间,如果是这样的话,那就不难理解了:passenger 和 rails 的代码是在一个进程空间中(passenger 的进程空间),那么 passenger 拿到请求之后,可以在自己的进程空间里面就像是调用函数/方法一样来调用 rack 的 handle 了,那么接下来的数据流也就很明白了。不知道是不是这样的?还有如果是这样的话,passenger 只怎么做到把 rails 的代码加载到自己的进程空间的,还能够执行其代码?感觉很神秘的样子。那么,是否就可以认为:rails 并不是一个可以单独存在的进程,它只是被其他的进程来调用?这很像是在执行 shell 脚本一样,动态运行,需要执行哪个脚本的时候,调用一下:sh XXX.sh 就行了,是这样的吗?
  • sidekiq 只是把 redis 当做一个中间件来使用,就算你的后台任务是分布在 N 个服务器上面运行,也不会影响他们使用同一个中间件---redis 服务器,这个 redis 服务器运行在哪里不重要,只要它能够提供 sidekiq 需要使用的命令就可以了。