• pyenv 就是从 rbenv 复刻(fork)过来的,所以同样也采取了编译的方法来安装。

    实际上,如果需要这种多版本控制,一般都会采用自己编译的方式。因为,较新版本的 Ruby/Python 构建往往不会存在于任何 Linux 发行版包管理器之中,即使 Arch Linux 的打包者也没那么快能跟上(而且还经常打包的有问题)。有的时候,我们还会有回到某个旧的版本的需求,以查看是否在特定的语言版本中,代码存在问题。而这些旧版本,上游也并不会提供。

    所以最好的方式,还是通过用户自己的环境直接编译源代码,这样便能够以最快速度获得最新的 Ruby/Python. 通过 rbenv/pyenv 用户可以从过去的任何版本一致跟踪到最新版本,灵活度很高。

    注:现在 Windows 上使用的 pyenv-win 是从 rbenv-win 复刻(fork)出来的。后者 rbenv-win 是用 vb 写的。Ruby 界的很多东西都被重复利用给其他生态了。

  • Windows 上的 RubyInstaller 也提供了 7z 压缩的“绿色版”,不用安装,直接打开就可以用。和你说的 wget一下,解压,直接用 的流程是一样的。

    https://rubyinstaller.org/downloads/ Other Useful Downloads 这里。

    其实 rbenv for Windows 每次使用 rbenv install x.x 下载的也正是这种 7zip 文件。

    类 Unix 系统上不知道,似乎没有。

  • 问题没有看懂,我理解为:

    1. 类 UNIX 系统上,rbenv 通过编译 Ruby 源代码来工作,所以需要一整套 C 工具链来构建
    2. Windows 上,RubyInstaller 默认带的有 MSYS2,是为了编译带有 C 扩展的 Gem

    如果不需要用带有 C 扩展的 Ruby,在 Windows 上可以下载 without-devkit 版本的 RubyInstaller,大小仅有 14MB,不包含你题中所说的构建工具。

    另外:rbenv for Windows 也是是用这个 without-devkit 的版本来下载最新的 Ruby,所有 Ruby 共用一套工具链。可能满足你所说的“下载即用” (一个命令即用)。

  • CommitGPT at 2023年02月27日

    太棒的想法了 👍

  • rbenv 安装 ruby 下载慢 at 2023年02月20日

    当然是直接用 rbenv-cn

    https://gitee.com/RubyMetric/rbenv-cn

  • 哈哈,你不知道 Ruby 社区近 5 年来的流行语吗?

    Ruby dies every year

  • I hate Java with a passion

    显然,我们社区存在三类人,对 Ruby 的热爱程度依次递减:

    1. Ruby Lover:爱Ruby到极致,会对其他语言吃醋,想把其他语言各种好东西搬过来
    2. Ruby Promoter:喜欢 Ruby 的语法,多数情况下会主动倾向使用 Ruby
    3. Pragmatic Programmer:实用主义的程序员,把Ruby和其他语言同类讨论,什么时候合适用什么

    作为要吃饭的程序员来说,更多的人倾向于成长为 Type 3. 各种语言八仙过海各有所长,都有各自合适的使用场景。作为一个终生学习者来说,可以各取所长,都学一点。Ruby 也从很多其他语言比如EiffelC++ 借鉴了相当多好东西。

    然而,整个社区的成长,则需要大量的 Type 1 的人站出来,比如 DHH 和 楼主。就一个社区的发展来说,必须坚定的反对竞争语言除非万不得已坚决不用 Python,Java 等。模棱两可的态度反而会使得社区的力量变弱,演变成

    Ruby 现在还不够给力,用 Python,Java 不就好了

    如果这种折衷主义存在,Ruby 就不会诞生,当时 Matz 就会接着忍受使用 Perl 就好了,想想看 1993-1995 年经济泡沫时期的日本,Matz 在当时不能说窘迫,但肯定是不富有的生活下创造了 Ruby。到底是迫不得已做 Type 3,还是坚定自己的信念做 Type 1Matz 做出了自己的回答。

    再一个例子:微软就算现在再怎么支持 Java,也只是无可奈何。微软要把 C#F# 打造成最好的语言,为了保持 C# 的生态,坚决不可能把机会让给 GoJava.


    另外,如果有人创业搞 C/C++CRubymruby的,不是 Web 领域的,请联系我,我们一起做一些把 Ruby 的使用场景拓宽的事!


    再说一句,为什么语言月经贴要么没人回复(大家已经喷的懒得再喷了),要么又激起激烈的讨论。就是因为三类人永远存在,比例有所不同,站在不同的利益出发点以不同的视角审视他人。Type 3 总是居高临下的喷 Type 1,三类人不必争得面红脖子粗,最重要的是 Type 1 的人能集合在一起做一些事情。

  • null at 2023年01月28日

    感谢反馈。

    你刷新下试试,中间那个“%20”是前几天提交后的 bug,已经被修复了。正确的链接是:

    https://rubyinstaller.cn/download/

    我这边访问没有啥问题,导航栏的链接跳转的也是正确的。

  • 5 年后,Shopify 的 CLI 工具也转到 NodeJS 了。偶然看到这个帖子,觉得有些悲哀,似乎 Ruby 的命运越来越只停留在后端了。

  • 补充:

    Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE

    今天刚好发现了这个变量的存在,在 Ubuntu 上,全局的 gem 配置文件也在 /etc/gemrc

    在 Windows 种,这个配置文件的位置在 C:/ProgramData/gemrc

  • @lanzhiheng @msl12

    文件系统都有 inode,都会有上限

  • 你把最后一行删了试试

  • 你再看一下 /etc/gemrc , 这个是全局的 Gem 配置,问题应该在这里。全局的会把你自己设置的覆盖掉,所以你的不起作用。

  • 对了,还有可能在 /etc/gemrc

  • 你似乎是 root,看下 /root/.gemrc

    如果这也没有,就运行 locate .gemrc 来找找

    如果还是没有,就看下你的环境变量有没有设置 "--install-dir=/opt/rh/rh-ruby30/root/usr/local/share/gems --bindir /opt/rh/rh-ruby30/root/usr/local/bin"

    如果设置了,把它删了试试

  • 在 Linux 上安装 Ruby,不需要用系统的包,或者自己下载解压那么麻烦。

    请直接使用 rbenv,如果您未接入外网,可以直接使用以下工具,省心省力,避免社区每个人都重复解决这个问题。

    https://gitee.com/RubyKids/rbenv-cn

  • 你看下你的 ~/.gemrc 这个文件,把这个

    "gem" => "--install-dir=/opt/rh/rh-ruby30/root/usr/local/share/gems --bindir /opt/rh/rh-ruby30/root/usr/local/bin"

    删了

  • 支持 👍

  • nil at 2022年06月15日

    求教,定理证明器是干什么用的?有没有现实中应用的例子?好像很多学术语言都搞成什么 prover 了。

    定理证明器能自动证明勾股定理吗。。。?纯属好奇,对这些东西没有了解。

  • 已合并你的 fix,感谢 👍

  • array.empty?耗时多久 at 2022年05月21日

    代码

    require 'benchmark'
    
    n = 1_000_000_000
    a = []
    
    Benchmark.bm do |b|
    
      b.report {
        n.times do 
          a.empty?
        end
      }
    
      b.report { 
        n.times do 
          a.size == 0
        end
      }
    
    end
    

    结果

         user     system      total        real
    40.484000   0.000000  40.484000 ( 40.483034)
    45.938000   0.000000  45.938000 ( 45.939939)
    

    结论

    empty? 快一丢丢,可能是因为 @pynix 给出的empty?代码直接用的 C 语言一步就出来了。而 a.size == 0 要执行两个步骤,先调用 size 方法,然后有一个额外的 == 操作,导致它略微慢一点。

  • 哈哈,感谢,just for fun

  • 垃圾回收原理浅析 at 2022年04月26日

    这个 ASCII 图是用什么画的啊?

  • 公开课吗?想听

  • null at 2022年04月16日

    我不知道你说的是哪种情况

    一。有 lib 和 share 的,但是不是必须存在。

    这种情况,有可能是作者把源代码放进去了,lib 和 share 可能不是必要的。中间会有个步骤,解压缩后,如果多于一个文件,会提示你自己选里面的某个二进制来放到 bin 中。

    二。lib 和 share 起关键作用,必须存在的。

    这暂时做不到。

    因为我目前解决的主要的问题就是 单个二进制。或者有 deb,rpm 的情况。比如 rbspy,它就是简单的把它打包了成了 tar.gz,只要解压,里面唯一的那个就是要被放进 bin 里的。

    https://github.com/rbspy/rbspy/releases

  • 用这个 https://gitee.com/RubyKids/rbenv-cn

    gem install rbenv-cn
    
    rbenv-cn install
    

    开始使用

    rbenv cninstall 3.1.2
    
  • 给博客换了套新评论系统 at 2022年04月06日

    VPN 访问国内网站,一般不会经过代理的似乎。

  • 感谢楼主分享 👍

    1. 找你学长,或者看 opengauss 的文档,看哪些接口被修改了,就直接在 Gem 源码里找这些函数去修改。

    2. 另外,直接找你老师要现成的用 pg 跑不通的例子,debug 到里面看哪里有问题。先进 Ruby 部分,然后进 C 部分。

    楼主加油,希望研究出来后,反馈给社区,教一下大家怎么实现的 😁

  • 更新:现在用户可以通过 RubyGems 安装

    gem install rbenv-cn