如果有人跟我一样卸载 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 的残留项。
PowerShell 7 可以正常运行,PowerShell 5 的话需要删掉
https://github.com/ccmywish/rbenv-for-windows/blob/main/lib/commands.ps1#L12 https://github.com/ccmywish/rbenv-for-windows/blob/main/lib/version.ps1#L83 这两行注释
支持。个人常在 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
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 呢?