• 我是按照要求写了

  • Good!管用!

  • 很明显不是这样啊。。。。。很多业务场景是直接去取数据,取不到数据/取到数据对应着不同的处理方法, 恰恰相反,取到数据的情况占大多数

  • 10楼正解。用哪种方法要结合具体业务。 比如,你要判断某个用户是否存在,最好的做法是:

    user = User.where("XXXXXX").first
    if user.present?
      XXXXX
    end
    

    难不成你要写成:

    if User.where("XXXXXX").exists?
      user = User.where("XXXXXX").first
    end
    

    如果present?真的一无是处,那官方早都把这个方法剔除了。。。。。

  • Rails 日志配置修改 at 2019年07月11日

    我需要追踪用户的所有请求 那样的话我需要去改底层的请求接入层啊

  • 在首次启动passenger的时候,需要明确gemfile的位置 下面是我写的启动脚本:

    #!/bin/bash -l
    # set -x
    
    dir=/var/www/XXX/current
    case $1 in
    start)
        cd $dir && (BUNDLE_GEMFILE="${dir}/Gemfile" bundle exec passenger start)
        echo -e "\033[32mpassenger server start OK!\033[0m"
        ;;
    stop)
        cd $dir && (BUNDLE_GEMFILE="${dir}/Gemfile" bundle exec passenger stop)
        echo -e "\033[31mpassenger server has been stopped!\033[0m"
        ;;
    restart)
        cd $dir && (BUNDLE_GEMFILE="${dir}/Gemfile" bundle exec passenger-config restart-app $dir --ignore-app-not-running)
        echo -e "\033[32mpassenger server restart OK!\033[0m"
        ;;
    *)
        echo -e "\033[35mUsage: ./passenger_server start|stop|restart\033[0m";;
    esac
    
  • 比较严格限制的需求下,可以着怎样做:APP内发出的HTTP请求至服务器,服务器返回的是加密后的页面,客户端拿到加密后的页面后,解密,渲染。这个是目前很多APP采用的做法。

  • 没错 我个人感觉 很多的公司用docker的场景都是“为了用docker而用docker”😂 😂 😂 ,为了啥?为了给自己本来业务量不大业务场景也不复杂的应用贴上一些前沿的词汇而已。。。。。真不知道有多少家公司的业务需要上百台服务器来支撑,一半以上的公司的某个产品,可能也就几台服务器就hold住了,但是这些公司的技术leader非要把自己本来稳定运行的环境搬迁到docker上,然后自我感觉良好。(个人拙见)😂

  • 已经解决

    passenger在启动的时候,默认使用bundle的执行环境,bundle在执行的时候会查找gemfile文件,查找顺序为ENV[BUNDLE_GEMFILE], ../Gemfile;

    如果在首次启动passenger的时候,没有加载环境变量BUNDLE_GEMFILE的话,那么gemfile文件的位置就是应用的根目录下的Gemfile文件路径,一旦passenger启动完成,那么bundle使用的gemfile文件的路径就不会再更改了(记录在passenger的进程中)

    所以在使用passenger-config restart命令的时候,在经过几次capistrano的keep_release之后,最初始的那个版本被删除之后,重启会失败,报错(Bundler::GemfileNotFound)

    所以在启动passenger的时候,指定环境变量:BUNDLE_GEMFILE 即可,类似于如下:

    BUNDLE_GEMFILE=/var/www/XXX/current/Gemfile bundle exec passenger start
    

    包括unicorn的启动也是如此 只不过unicorn会在启动脚本里面加上:

    before_exec do |server|
      ENV['BUNDLE_GEMFILE'] = "/var/www/XXX/current/Gemfile"
    
    end
    

    道理是一样的

  • 很赞!我很喜欢这种docker+自己写脚本部署的方式