Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提一些小建议 #21

Open
zhangzikai opened this issue Sep 25, 2023 · 6 comments
Open

提一些小建议 #21

zhangzikai opened this issue Sep 25, 2023 · 6 comments
Assignees

Comments

@zhangzikai
Copy link

1.ruby.exe一定要放在path里.可以只能在powershell里使用rbenv,但是不能只能在powershell里才可以使用ruby
2.启动powershell就自动安装ruby?这是什么鬼.我还没选择版本呢,你就给我乱搞,我建议别人第一次选择安装ruby的时候再去懒初始化
3.提供选项,让别人可以选择使用自己的msys,别人自己的msys里有很多库,ruby自己搞一套msys,自己管理一套库,很混乱
4.ridk.ps1 里的& $rubyexe $args 改成 & $rubyexe ($args -join " ") ,不然ridk enable 会报错

@ccmywish
Copy link
Collaborator

ccmywish commented Sep 25, 2023

Hi @zhangzikai

非常感谢你的建议和反馈,我将认真考虑。

  1. 这个有道理,也是一个比较困扰我的问题,还是受制于实现才这么做的,将来可能会改变。
  2. 第2个和第3个其实是一起的,因为ruby的MSYS2并不是纯粹的MSYS2,上游往里面塞了一些包的(似乎并不在MSYS2官方源中),还做了一些额外处理,所以用户自己的MSYS2应该没有这些,甚至可能无法通过pacman安装。所以会影响正常使用。一上来就强制用户安装最新的ruby,其实目的是为了保证有这么一个RubyInstaller2打包的MSYS2环境
  3. MSYS2环境对Windows上的Ruby非常重要,MSYS2的位置非常影响Ruby的启动速度,如果你把MSYS2放在比如D盘之类的地方,你的Ruby程序启动时间将会延长至3,4秒。所以MSYS2的位置放在当前rbenv的设计的位置,是默认启动速度最快的,只有70ms。这个逻辑并不是我写的,而是RubyInstaller2项目写的。所以不明所以的用户如果使用了自己的MSYS2,可能极度影响他自己的体验
  4. 这个可能是你的PowerShell的版本问题,你可以发一下你的PowerShell版本。在我这边用的是pwsh,ridk enable 没有这个问题。但是我没有用 cmd 试过,您对此有需求吗?

希望上述2和3的现状的解释,能一定程度上消解您的不满。

其实最主要的问题是,理清上述这些问题需要耗费比较大的时间和精力,尤其是MSYS2那一块,我一直有意要去看完上游RubyInstaller2的打包项目,但是一直没抽出时间。

过一阵子,我将对这些代码研究一遍,然后做出一些改变。再次感谢您的建议,这个issue我会保持开启

@ccmywish
Copy link
Collaborator

ccmywish commented Sep 25, 2023

我能感觉到您是 MSYS2 的重度用户,所以给您带来了不便。

我目前的做法是,直接用rbenv下载下来的MSYS2作为主要环境,日常开发也是用 ridk exec 来工作。

这个问题确实有待考虑,希望您谅解,一两个月之内受时间问题我可能无法做出改变,深表歉意。

@zhangzikai
Copy link
Author

zhangzikai commented Sep 25, 2023

1.把bin和shim文件夹直接给加到path里,然后根据用户设置好的版本,转发命令不就好了?
另外干嘛要pwsh执行的时候就去检查global.txt,需要判断这个东西在不在,得是rbenv version执行的时候吧

2.3.我研究了一下rubyinstaller去找msys的逻辑,比如ruby安装在了 c:/a/b/c/bin/ruby.exe.他找的顺序会是 c:/a/b/c/msys->c:/a/b/msys->c:/a/msys->c:/msys.可以利用这个机制.
另外rubyinstaller说支持用户自行安装的msys,执行ridk,选择3,rubyinstaller会自动在找到的msys里面 (没有的话就会去安装环境),用pacman安装他所需要的包,可以和用户msys很好的集成在一块

我们不在初始化时直接安装msys.而是等到用户执行安装命令的时候
rbenv install 3.1 --msys-location=c:/msys64
我们检测用户提供msys位置了没有
提供了的话,我们在 c:/ruby-windows/msys位置hash/ 下面搞个软链接,把 c:/ruby-windows/msys位置hash/msys 链接到那个位置,ruby的话安装到 c:/ruby-windows/msys位置hash/ruby 然后执行一下ridk,3.如果没有提供,则还是那一套,先判断是不是共享msys的ruby,看看c:/ruby-windows/default/msys在不在,不在的话,安装,然后把msys挪出来;不共享的话,直接安装

4.我是powershell7.3.7(不是windowspowershell),rbenv 的ridk里面& $rubyexe $args ,在ruby的idk里 有一句 $op=$args+"enable",直接调用 ruby的idk,$op是个string,而转发的$op是个object[],转成string会用回车符join起来,搞出问题来

ccmywish added a commit that referenced this issue Sep 25, 2023
@ccmywish
Copy link
Collaborator

@zhangzikai

第4个已复现并确认,已按照您的方式修复,非常感谢。

第1个现在由于有fake ruby.exe的存在,暂时无法直接转发,我将会用另一种方式试试看。

2和3的话,如果能够确认ridk install安装的没有问题,可以采取这种方式,我会试验一下,如果确认各方面可以工作,将会采取您的建议。感谢。

@ccmywish ccmywish self-assigned this Sep 25, 2023
@ccmywish
Copy link
Collaborator

4.ridk.ps1 里的& $rubyexe $args 改成 & $rubyexe ($args -join " ") ,不然ridk enable 会报错

这个方法有问题,导致ridk exec 报错,我已修复。

ccmywish added a commit that referenced this issue Sep 25, 2023
@ccmywish
Copy link
Collaborator

1.ruby.exe一定要放在path里.可以只能在powershell里使用rbenv,但是不能只能在powershell里才可以使用ruby

该问题已解决,PowerShell 和 cmd 下均可以使用 ruby, rubyw, ridk 三个命令,请使用 rbenv update 来更新试用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants