frum: https://github.com/TaKO8Ki/frum
gobang: https://github.com/TaKO8Ki/gobang
Article about frum: https://zenn.dev/tako8ki/articles/2021-09-ruby-version-manager-written-in-rust
I built a Ruby version manager with Rust, which is 7 seconds faster than rbenv. In detail, it takes about 7 seconds faster to install a particular version and set it with frum than rbenv.
Ruby has a lot of code that depends on the runtime version. Therefore, it is important to manage Ruby versions. However, it takes 2 to 3 minutes to run rbenv install, depending on the environment, and waiting for this to happen every time you install a new version is inefficient. The main bottleneck is a command-line utility called ruby-build, which makes it easy to install virtually any version of Ruby. In order to solve this problem, I created a Pure Rust Ruby version manager called frum.
In this talk, I will share my efforts to build a simple and easy to use Ruby version manager with Rust, and what I learned in the process of making frum like the following things.
- Tips on good E2E testing a CLI that manipulates files using declarative macros
- Tips for writing a CLI with multiple subcommands in Rust
- How to use the command line parser clap to implement flexible command-line completion
Q&A
frumはプロダクションでも利用できますか?例えば、今後どのくらいの期間保守が続けられる予定でしょうか?(追記)例えば、moneyforward社で利用予定はありますか?
→
> frumはプロダクションでも利用できますか?例えば、今後どのくらいの期間保守が続けられる予定でしょうか?
プロダクションでの利用はあまり想定していません。例えば、tempdirを利用しているので、ユーザー間でそれが競合してしまうことなどが考えられます。基本的に僕が仕事でRubyを書いている間はメンテする予定なので、少なくとも2、3年は問題ないと思います。基本的にはユーザーがいる限りメンテし続けようとは考えています。
> 例えば、moneyforward社で利用予定はありますか?
基本的に本番環境でバージョンマネージャーを用いたバージョンの切り替えなどは行ってないはずなので、本番環境での利用はしないと思われます。ローカルで使ってくださる方は、もしかしたらいるかもしれないですね。そこら辺は他のOSSと同じで個々の判断で使っていただく形になると思います。