• 如果有人跟我一样卸载 Ruby 时只是直接删除 C:\Ruby26-x64 文件夹和变量而不是运行卸载程序的话,注册表还会残留 RubyInstaller 的信息,导致 rbenv for Windows 读取出来一个不存在的 system,安装 gem 的时候会出现

    Set-Content: C:\Ruby-on-Windows\rbenv\libexec\rbenv-rehash.ps1:30
    Line |
      30 |          Set-Content "$where\$name.ps1" $REHASH_TEMPLATE
         |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         | Could not find a part of the path 'C:\Ruby26-x64\bin\kramdown.ps1'.
    

    解决方法是删除注册表:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall RubyInstaller 的残留项。

  • 支持。个人常在 Windows 上写点小工具,然后用 ocra 或者 neri 打包成 exe 分发。

    wsl 只在写 Rails 的时候使用(主要是一些 C 扩展不支持 Windows)。

    安装完之后启动遇到了错误,机器上有一个 Ruby 3.1。

    rbenv: Only one system Ruby is support, but you've installed 3
    Seems you have just installed rbenv, auto install MSYS2 for you
    MSYS2 is must-have if you want to install gems with C extensions
    所在位置 C:\Ruby-on-Windows\rbenv\lib\commands.ps1:13 字符: 9
    +         | Where-Object { $_.name -match 'rbenv-.*?\.ps1$' }
    +         ~
    不允许使用空管道元素。
        + CategoryInfo          : ParserError: (:) [], ParseException
        + FullyQualifiedErrorId : EmptyPipeElement
    
    所在位置 C:\Ruby-on-Windows\rbenv\lib\version.ps1:84 字符: 17
    +                 | Where-Object {
    +                 ~
    不允许使用空管道元素。
        + CategoryInfo          : ParserError: (:) [], ParseException
        + FullyQualifiedErrorId : EmptyPipeElement
    
    get_commands : 无法将“get_commands”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径
    ,请确保路径正确,然后再试一次。
    所在位置 C:\Ruby-on-Windows\rbenv\bin\rbenv.ps1:126 字符: 23
    + $available_commands = get_commands
    +                       ~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (get_commands:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    
    rbenv: 'install' isn't a rbenv command. See 'rbenv help'.
    加载个人及系统配置文件用了 553 毫秒。
    
    PS C:\Ruby-on-Windows> $PSVersionTable.PSVersion
    
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    5      1      25120  1000
    
  • https://bugs.ruby-lang.org/issues/18229

    activerecord: 1.37x

    Kokubun's railsbench: 1.16x

    3 个月竟然提升这么多

  • SecureRandom.urlsafe_base64
    
  • https://pointersgonewild.com/2021/06/02/yjit-building-a-new-jit-compiler-inside-cruby/

    railsbench 速度提高 7%,activerecord 速度提高 19%。

  • 是不是 RubyMine 打开的和终端里不是同一个项目啊

    按几下 ctrl+s 或者重启下 RubyMine 试试 你先在记事本里把这行改成 gem 'mini_magick', "~> 4.11.0"

  • notepad Gemfile 看看 source 是不是真的保存上去了

  • bundle install --local

    不过每次都要先 gem install 之后执行。

    建议参考 https://gems.ruby-china.com/ 把 Gemfile 的源换了

    bundle config mirror.https://rubygems.org https://gems.ruby-china.com
    
  • 尝试在 Windows 上编译了最新的 Ruby,版本是:

    ruby -v
    ruby 3.0.0dev (2020-12-22T22:20:14Z master 74a3569b59) [x64-mswin64_140]
    

    先跑了一下 evt 的 http_server.rb

    $ wrk -t 4 -c 8192 -d 5s http://127.0.0.1:3002
    Running 5s test @ http://127.0.0.1:3002
      4 threads and 8192 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   701.41ms  312.39ms   1.75s    80.00%
        Req/Sec     8.39      1.86    15.00     82.93%
      43 requests in 5.12s, 2.10KB read
      Socket errors: connect 7176, read 0, write 66885, timeout 3
    Requests/sec:      8.39
    Transfer/sec:     419.54B
    

    接下来跑 midori

    wrk -t 4 -c 8192 -d 5s http://127.0.0.1:8080
    Running 5s test @ http://127.0.0.1:8080
      4 threads and 8192 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency    88.24ms  156.39ms   1.92s    98.16%
        Req/Sec     2.03k     2.28k    8.88k    82.46%
      27624 requests in 5.12s, 1.95MB read
      Socket errors: connect 7176, read 0, write 64339, timeout 52
    Requests/sec:   5392.87
    Transfer/sec:    389.72KB
    

    在 Windows 上就不追求性能了,只要能用就行。😀

    发现跑完之后,过一会儿 midori 就出错:

    C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/select.rb:25:in `select': Bad file descriptor (Errno::EBADF)
            from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/select.rb:25:in `select_wait'
            from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/select.rb:25:in `wait'
            from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/bundled.rb:39:in `run'
            from C:/ruby-windows/lib/ruby/gems/3.0.0/gems/evt-0.3.1/lib/evt/backends/bundled.rb:150:in `close'
    
  • Run - Edit Configurations 把 Ruby SDK 那一项 改成 Use other SDK 然后选择一个 SDK 试试。

  • 我个人觉得在不熟悉 Linux/Mac 的情况下 Windows 开发是最高效的,先不说在 VBox 虚拟机下会遇到奇葩的问题 (开个 IDE 要 3 分钟),在 Linux/Mac 开发没有很大的效率提升,反而因为不熟悉而降低了开发效率。

    对于一个不熟悉 Linux 的初学者来说,如果学习 Ruby/Rails 需要先折腾一下 Linux 或者买个 Mac,何不学习 Python/Django 呢?