Ruby 2.7 REPL 中的历史记录支持
History support in Ruby 2.7 REPL
如果您输入以下内容,我会在 IRB 中注意到:
Readline::HISTORY << 'something = ->() { 5 }'
然后当您按键盘上的向上箭头键时,您将看到您的代码 something = ->() { 5 }
。然后按回车键执行代码...
老红宝石也是如此。但是对于 Ruby 2.7,它不起作用。
它不会引发任何类型的错误,当您按向上箭头键时,历史记录根本不起作用!
事实上,我已经对 REPL 进行了修补以满足我自己的需要。它将历史记录写入文件,然后在加载 irb shell 时加载它们(就像 MRuby 的 REPL "mirb")。
Here's the patched irb.
有什么方法可以让 Ruby 2.7 的补丁 irb 工作?
Is there a way I to get the patched-irb work with Ruby 2.7?
让打过补丁的软件版本与新版本一起工作总是很棘手,尤其是当您对内部功能如何工作做出假设时。
当你的补丁版本与原始版本没有任何关系时,这会更难。您创建了自己的 irb
存储库,它与原始 irb
没有任何关系,因此无法使用版本控制来保持最新。
相反,创建原始存储库的分支并在分支中创建补丁。然后通过从原始上游存储库中拉取,您可以更好地了解最新变化,确保一切仍然有效,并准确找出您的补丁失败的上游版本。
幸运的是irb
was recently spun off into its own gem。分叉那个 gem,在那个分叉中制作你的补丁,并通过定期从上游 gem.
拉取更改来保持最新
然后将您的补丁作为拉取请求提交到上游。如果它们被合并,它们将作为更大项目的一部分继续工作。单独维护它们不再是你的工作。
如果您输入以下内容,我会在 IRB 中注意到:
Readline::HISTORY << 'something = ->() { 5 }'
然后当您按键盘上的向上箭头键时,您将看到您的代码 something = ->() { 5 }
。然后按回车键执行代码...
老红宝石也是如此。但是对于 Ruby 2.7,它不起作用。 它不会引发任何类型的错误,当您按向上箭头键时,历史记录根本不起作用!
事实上,我已经对 REPL 进行了修补以满足我自己的需要。它将历史记录写入文件,然后在加载 irb shell 时加载它们(就像 MRuby 的 REPL "mirb")。 Here's the patched irb.
有什么方法可以让 Ruby 2.7 的补丁 irb 工作?
Is there a way I to get the patched-irb work with Ruby 2.7?
让打过补丁的软件版本与新版本一起工作总是很棘手,尤其是当您对内部功能如何工作做出假设时。
当你的补丁版本与原始版本没有任何关系时,这会更难。您创建了自己的 irb
存储库,它与原始 irb
没有任何关系,因此无法使用版本控制来保持最新。
相反,创建原始存储库的分支并在分支中创建补丁。然后通过从原始上游存储库中拉取,您可以更好地了解最新变化,确保一切仍然有效,并准确找出您的补丁失败的上游版本。
幸运的是irb
was recently spun off into its own gem。分叉那个 gem,在那个分叉中制作你的补丁,并通过定期从上游 gem.
然后将您的补丁作为拉取请求提交到上游。如果它们被合并,它们将作为更大项目的一部分继续工作。单独维护它们不再是你的工作。