我在Ruby on Rails 3.1.1中使用控制台,我发现它的命令历史记录(向上箭头)非常脆弱.我已经运行的命令p = Product.by_name 'Acme'和p.add_search_term('Snipe')今天好几次,在多个控制台会话.
然而,当我重新加载Ruby on Rails控制台时,只有第一个显示在我的命令历史记录中,而不是第二个.在我重新加载控制台后,有时他们都在历史中.最重要的是,我看到历史上的命令是几天前仅按下箭头几次之后的命令.是否需要更改某种配置或这是一个错误?
我通过rbenv-installer安装ruby .
当我使用irb控制台时,我可以通过在键盘上按下来使用历史记录.当我从控制台退出并再次启动时,我无法使用史无前例的历史.当我按向上箭头按钮时,没有发生任何事情.
当我使用rvm这个选项工作.如何在rbenv中打开它?
在〜/ .irbrc我有这些行:
require 'irb/ext/save-history'
#History configuration
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
Run Code Online (Sandbox Code Playgroud)
然而当我跑步irb并击中向上箭头时没有任何反应.也没有创建指定的irb历史文件,也没有记录任何内容.
在调查我的Mac上的irb问题时(OS X 10.11.5),我注意到了/etc/irbrc.前几行如下:
# Some default enhancements/settings for IRB, based on
# http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks
unless defined? ETC_IRBRC_LOADED
# Require RubyGems by default.
require 'rubygems'
# Activate auto-completion.
require 'irb/completion'
# continued ...
Run Code Online (Sandbox Code Playgroud)
它似乎已经过时了(rubygarden.org已经消失了,rubygems现在已经出现在标准库中了)并做了我一直认为必须自己做的事情~/.irbrc(设置完成,历史等).
它是日期为2016年1月31日.我可能会或可能不会在该日期运行Apple系统更新或升级其他内容; 我不记得了.从那时起,我肯定已经将OS X升级为一个或两个主要版本.
我不认为我在这台计算机上安装了任何Rubies,而不是OS X和安装了rbenv的Ruby 2.3.1(在我自己的帐户中,而不是root用户).也就是说,我不认为这个文件可能来自OS X之外的任何东西.
Unix shell约定会让我期望/etc/irbrc在任何用户运行irb之前执行一个名为的文件,~/.irbrc如果他们有一个.但是,OS X安装的irb似乎没有读取此文件:我放在puts 1顶部,当我运行irb时看不到结果.(我通常使用rbenv,但在调查此文件时禁用它.)/etc/irbrc似乎无法运行,无论我是否有~/.irbrc.此外,我看到没有提及此文件/usr/bin/irb或/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.
我的猜测就是这个档案
~/.irbrc.有谁知道肯定,或知道有什么不同?
我不需要或不需要它; 我很乐意保持自己~/.irbrc.我只是想确保它在运行时不会影响irb(特别是我通常使用的rbenv安装的Ruby中的irb),并且未来的OS X升级不会改变irb行为.
irb使用Homebrew安装Ruby后如何工作?
当我尝试运行时irb,出现错误:
$ irb
Traceback (most recent call last):
2: from /usr/local/opt/ruby/bin/irb:23:in `<main>'
1: from /usr/local/lib/ruby/site_ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
/usr/local/lib/ruby/site_ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem irb (>= 0.a) with executable irb (Gem::GemNotFoundException)
Run Code Online (Sandbox Code Playgroud)
我试过了:
$ brew link ruby
Warning: Refusing to link macOS-provided software: ruby
If you need to have ruby first in your PATH run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
For compilers to find ruby you may need to set:
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
Run Code Online (Sandbox Code Playgroud)
我的/etc/paths文件顶部下面有几行:
/usr/local/bin
/usr/local/opt/ruby/bin
/usr/local/lib/ruby/gems/2.6.0/bin …Run Code Online (Sandbox Code Playgroud)