• Rails 7.0 正式版发布啦! at 2022年01月05日

    公司 boss 决定。。。。。你指的是那种连 boss 一共 5 个人以内规模的公司吧😂

  • Rails 7.0 正式版发布啦! at 2021年12月20日

    rails 这个框架挺不错的,就是前后端深度糅合的方式不喜欢😂 我一直不认为一个人能把前后端都做得很牛逼。见过不少前端程序员写后段代码的,写得像💩一样,也见过不少后端程序员写前端代码的,写得一样跟💩一样。当然,肯定有前后端都很牛逼的人物,不过这种人太少了,而且也没啥意义。

  • 哈哈哈 XSWL 说的很在理 用 rails 的开发效率真的是太高了 一个人可以短时间内搞定一个规模不小的 WEB 系统😀

  • RubyGems 镜像源拉胯 at 2021年01月04日

    OK

  • session 何止能放在 cookie 里面,当成参数放在 URL 链接上都是可以的🤗 🤗 🤗

  • session 存在客户端那边可不是什么最佳实践。。。。。因为:优点可以忽略不计,缺点数不胜数 一句话,费劲。

  • 如何获取微信聊天消息? at 2019年09月12日

    谢谢 已经找到解决方法了 就是在安卓上挂一个插件

  • 如何获取微信聊天消息? at 2019年09月05日

    web 版本的微信登录不上了。。。。

  • ruby 不适合拿来赚工资钱了,事实就是:市场对 ruby 的需求非常少了! 但是,ruby 非常适合个人、小团队做创业性的小项目,其实就算不是小项目,百万级用户的项目也没啥问题。 就拿我个人来说,和一些朋友做一些小项目,我用 ROR,后台我一个人写就 OK 了,而且业务代码量也不少,但是用 ruby 一个人足够了。

  • redis

  • 我是按照要求写了

  • 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+ 自己写脚本部署的方式

  • 👍 好的

  • 之前的项目一直是 rails3.X 的 资源的安放路径是 public 现在使用 5.2 的版本,想遵循一些以前的做法,看来我的这种想法就是错的

  • 是的,我现在直接用< style >标签的写法了,资源的时间戳是我自己打上去的。

  • 我们不用 AP 来编辑静态资源,我们前端用自己的构建资源的工具以及压缩方法。一般上线前,前端会把他们编译压缩后的静态资源提交,我们直接引用相应的资源即可,没有用到 AP 的功能,所以也禁用了 AP。但是感觉 stylesheet_link_tag 的写法很方便,所以想使用这个 helper 方法。尤其是 stylesheet_link_tag 可以在生成的资源文件后面加上时间戳来防止资源文件的缓存问题。

  • 禁用 Assets Pipeline 之后,stylesheet_link_tag 写成相对路径不生效,写成绝对路径就行了,但是不知道在哪里设置 stylesheet_link_tag 的默认工作 dir

  • 是的,我感觉也是,在线上环境下使用 gemset 来管理 ruby gem 非常不方便,出了在自己的个人电脑上还行。推荐的文档不错!

  • 开源 Tower 的编辑器 Simditor at 2018年09月29日

    tower 文档编辑器的版本对比的功能,包括文档版本回退,用的是什么方案实现的?不会是 git 吧

  • “我突然想到一种神经病的做法 就是所有请求的返回码都是 404 这样浏览器就会忽略你 response-body 但是你可以在你的 app 里面继续使用”你说的这种方法其实有人在用,就是 HTTP 请求得到的是加密后的 HTML 文本,只有自己的 APP 内的改造过的浏览器才能渲染,这种方法的破解难度要大多了

  • 这种做法跟识别特定的 UA 是一样的道理,只能做基本的防护,用任一款网络请求分析工具都能看到 APP 发出去的 HTTP 请求的详细信息。

  • 一次性签名一样不能防止盗链,同时,一次性签名还会带来不好的用户体验