• 尝鲜 Omakase at 2024年11月04日

    刚装完 Ubuntu,做了点基础配置,然后就忍不住卸载了。麻利的滚回 macOS。

  • 感谢指正。

    1 反复安装是什么毛病就不清楚了,我没有对默认 dockerfile 做很大的修改。2 的 dockerfile 与 1 的基本没差别。但是 2 里,再也没出现反复安装 gem 的情况了。

    1 里,我还有个问题,会卡死在 RubyZip 3.0,必须安装 ruby 3.2.4,或以下版本才行。

    2 里,我已经升到 3.3.5 最新版了,并开启了 yjit。

    总而言之,言而总之。用 2 就对了,这次的版本对单机部署也很友好。之前在 1 里。为了实现单机部署,额外自己加了好多配置。

  • 感谢一下啊,用 docker logs 容器id ,这个方法对我帮助很大。

    在反复尝试下,我终于成功了。现在说明下碰到的问题:

    问题一:Docker

    国内这网络环境,DockerKamal是装不上去的。镜像也是不可能拉取下来的。请先用 SSH 连上服务器,自己把Docker配置好

    安装 Docker

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    配置 docker 镜像

    vim /etc/docker/daemon.json
    
    {
      "registry-mirrors": [
        "https://docker.rainbond.cc"
      ]
    }
    

    重启 Docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    问题二:thruster

    thruster是必须安装的,Let's Encrypt 的 SSL 证书需要在这里实现。

    gemfile里增加

    gem "thruster", require: false
    

    增加/bin/thrust文件

    #!/usr/bin/env ruby
    require "rubygems"
    require "bundler/setup"
    
    load Gem.bin_path("thruster", "thrust")
    

    Dockerfile,最底下改为

    EXPOSE 80
    CMD ["./bin/thrust", "./bin/rails", "server"]
    

    使用了以后,会在80端口启动项目。

    问题三:SSL 问题

    打开production.rb,强制 SSL 需要关闭,如果开启无法启动容器。

    config.force_ssl = false
    

    虽然在config/deploy.yml中,增加了 SSL 相关配置,但是启动会失败。

    proxy:
      ssl: true
      host: clwy.cn
    

    猜测可能是由于初次刚启动,thruster申请的证书还没成功运行,项目就强制 HTTPS 了,导致kamal检测失败。

    问题四:容器之间互相访问

    不能用ip,更不能用localhostkamal2,创建了个叫做kamal的网络,并把所有容器都加入进去了。

    进入服务器上,docker ps,可以看到自己运行的容器

    • 例如项目中使用redis,那你代码中的地址,就应该是redis://clwy-redis:6379/0
    • 要使用数据库,请求地址就是clwy-db

    其他

    Kamal 2的变更较大,请想升级的朋友们,一定要做好测试。我先用虚拟机测(使用局域网桥接 ip),然后又搞了个临时服务器测试,最终才部署到正式服务器。

    同时,我使用Kamal 2,利用在deploy.yml中的配置,已将其他服务已经更新到最新版本了

    • PostgreSQL 17
    • Redis 7.2.5
    • Meilisearch v1.10.2

    相对于Kamal 1,最大的特点是部署速度变快了。之前用Kamal 1,初次部署需要一个小时以上,它会反复的安装gem,而且越安装越慢。之后再部署,只要不改gemfile,仅修改代码,部署需要 10 分钟左右。

    使用Kamal 2,初次部署,大致 5 ~ 6 分钟左右。

  • 刚开始没搞 Thruster,在 3000 启动服务,失败。后来给项目加了 Thruster,在 80 启动,继续失败。没脾气了,今天继续。

  • Kamal 2,昨晚折腾了一晚上没部署起来。本地虚拟机测试的好得很,一上线部署就无法启动,不断的重启。查了各种资料,折腾到我早上 10 点了,改回 kamal 1.9 部署了。

  • Docker 在 win 下运行速度十分慢,除此外没问题。

  • https://github.com/ambethia/recaptcha/wiki/Recaptcha-with-Turbo-and-Stimulus

    有新的玩法了,使用 Turbo 结合 Stimulus。recaptcha v3 无感先试,不行再切到 v2 让用户点。 Rails 7.1 已尝试集成了,没有发现问题。

  • 我都见过有公司在 win 跑虚拟机,在 linux 虚拟机里再跑 docker,速度比 win 直接运行 docker 快很多很多。

  • 就是 win docker 的问题,我 100 毫秒响应的页面,win 的 docker 跑到 30 秒,我都惊呆了。

  • 剪辑用的什么呢?final cut 吗?

  • 薯片 + 可乐

  • Of course, all of my company's projects are developed in ruby. Because I'm in charge of the company, and I don't want to use any other language.

  • 来自语言本身,我灵魂深处对它的厌恶

  • 看着很不错哦,下次部署就用这个

  • 老铁,Hate java with passion +10000000000000000000000086

  • 我不是编程界的大佬,我是吹牛大佬。😀

  • 可以研究下怎么写一门新编程语言和开发一个操作系统。

    😀 😀 😀

  • 实际测试,测试机 macOS 系统。我的项目页面比较复杂,查询也相当多。

    • 本机直接运行,100 毫秒的样子。
    • docker 直接运行,1500 毫秒的样子。
    • 开启 docker-sync 后,250-300 毫秒。

    确实是快了 5 倍,但依然还是本机直接运行最优。我感觉 docker 还是只适合部署,不适合开发用。

  • 查到目前 python 上的相关包也是一堆问题。

    这搞的没法开发了

  • https://github.com/Homebrew/brew/issues/7857 Homebrew 的支持情况。

  • 我看了 homebrew 的说明,目前不支持 rbenv,不支持 ruby-build。

  • 再次做了测试,

    1. 包含 span

    <a href="/test" style="display: block">
      <span>你好</span>
    </a>
    

    果然可以完美的触发。

    2. 包含行内的 div

    于是我在 1 的思路之上,尝试将 div 设置为 inline 或者 inline-block

    <a href="/test" style="display: block">
      <div style="inline-block">你好</div>
    </a>
    

    惊喜的发现,这样也可以完美的触发。

    3. 出现问题

    我继续检查站点,发现链接包含的图片又出问题了,无法触发。

    以下是我测试的代码:

    <a href="/test" style="display: block">
      <img src="https://images.clwy.cn/video/course/23/image/7bbd2f.jpg"  style="vertical-align:bottom;">
    </a>
    

    图片的底部会因为基线问题,出现一小段空白。为了防止误判,加上了vertical-align:bottom;,使得图片与 a 高度一致。

    发现无论怎么给 img,或者给 a 设置 display,都无法触发到。

  • 1. 盒子没撑开问题

    我再次做了测试,这次用一个更简单的结构:

    <a href="/test" style="display: block">
      <div>你好</div>
    </a>
    

    没有任何其他 css,这样都无法触发到预加载。

    如果改为:

    <a href="/test" style="display: block">
      你好
    </a>
    

    这样就触发的完全没问题。劳烦测试看看,是否也有相同的问题存在。

    2. 酷站域名错误

    名称已经换成「长乐未央」了,但是域名还没修改,依然还是老的那个。

    请帮我把域名,修改为https://clwy.cn

  • 1. 超链接触发有点小问题:

    • 如果是简单结构的超链接,触发的完全没问题。
    • 如果是结构比较复杂的超链接,就像下面这个。只有最外层有一个超链接,里面包含了一堆内容。
    <a title="HTML 入门" href="/video/courses/html">
        <div class="images">
          <img alt="HTML 入门" src="https://images.clwy.cn/video/course/23/image/7bbd2f.jpg" data-src="https://images.clwy.cn/video/course/23/image/7bbd2f.jpg" class="lazyload lazyloaded" data-ll-status="loaded">
        </div>
        <div class="info">
          <h3 class="title">
            <span class="badge blue">全6回</span>
            HTML 入门
          </h3>
          <p class="date">
            <span>2020年08月27日更新</span>
          </p>
          <div class="detail">
            <p class="description">
              HTML中文全名叫做超文本标记语言。
            </p>
            <p class="tags">
              <i class="fa fa-tag"></i>
                <em>HTML</em>
            </p>
          </div>
        </div>
    </a>
    

    turbolinks-prefetch 源码中通过:

      document.addEventListener('mouseover', (event) => {
         this.mouseover(event)
       })
    
     mouseover(event) {
       const { target } = event;
       console.log(target)
    }
    

    测试了下,很难触发到a标签上。

    虽然调整 html 结构,可以满足需求,但是工程量太大了。请问 @huacnlee ,有没有更简单的解决方案?

    可以访问我部署的这个站点,https://clwy.cn 。导航条的链接触发是正常,但是中间的课程列表部分则很难触发。

    2. 修改酷站网址

    麻烦将酷站中,「ITFun.tv」,修改为「长乐未央」域名:https://clwy.cn。 以前老域名已经不再使用了。谢谢

  • 好东西,今天就加上

  • 等稳定一周了,看着没换回来,我就跟着换😛

  • 比我想象的低很多。以为最少是 4 核 4G,或者 4 核 8G 的。 难以想象,2 核 4G 里面还跑了 Docker,跑了 Action Cable,跑了 ES 搜索。居然还能稳定运行。

  • Stimulus 中文文档翻译 at 2020年05月30日

    很高兴能有帮助

  • 我就是好奇 ruby china 不上传也能用

  • 明白了