开始使用Ruby控制台出现问题

4

我对Ruby还比较陌生。我在启动控制台第二次时遇到了问题。我创建了我的应用程序(JacksApp)并为它创建了一个模型。然后我关闭了应用程序,尝试重新启动控制台第二次。当我键入“rails c”时,会出现以下内容:

通过Spring预加载器运行进程81129 正在加载开发环境(Rails 5.0.0.1) 没有终端类型“1.0.0/libexec:/Users/johnseabolt/.rbenv/shims:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin”的条目; 使用哑终端设置。 irb(main):001:0>

我不明白发生了什么。有人能帮忙吗?我在应用程序的目录中。我很困惑。


看起来 spring 在后台运行。你可能没有打算运行它。你尝试过杀掉 spring 进程 (kill -9 81129; 进程 ID 来自错误信息),然后再运行 rails c 吗? - Matt
3个回答

5
在MacOS Sierra中,请在Terminal.app中检查TERM。
$ echo $TERM
xterm-256color
$ bin/spring stop
$ bin/rails c
No entry for terminal type "local/var/ry/rubies";
using dumb terminal settings.
irb> exit
$ bin/rails c
Cannot read termcap database;
using dumb terminal settings.

您可以通过终端 > 首选项 > 配置文件 > 高级 > Terminfo > 声明终端为:xterm 来更改TERM。

打开新的终端。

$ echo $TERM
xterm
$ bin/rails c
irb>    

所有的甜言蜜语而没有任何警告。

现在我将把它留给知识更加渊博的人来解释为什么。


对于iTerm,您可以在“首选项->配置文件->终端->报告终端类型”中找到终端设置。您需要启动一个新的终端会话(选项卡)才能使更改生效。 - Vala

4
为了解决这个问题,你需要停止所有的Rails进程和Spring(使用bin/spring stop命令),然后确保你启动Spring时附加了终端。基本上有三种方式启动Spring:bundle exec rails server、bundle exec rails console或类似bundle exec guard或其他测试工具。如果你通过Foreman启动Rails,则它将运行其中一条命令。
启动控制台将会将输入附加到进程中,这就是它发现“终端”类型的地方。在做任何其他事情之前,请先执行此操作。一旦加载到内存中,它就被正确配置了,然后启动服务器或其他东西就能正常工作了。
先启动服务器再启动控制台会导致出现你所看到的疯狂错误。先启动控制台再启动服务器则不会出现这种情况。

1

您还能使用控制台吗?结尾处的irb(main):001:0>表明它确实在工作,只是您会收到有关终端类型设置丢失的警告。

要解决此警告...如果您正在使用第三方终端仿真器,则应重新安装该仿真器并查看是否可以解决问题。否则,您可以在~/.bashrc文件中手动设置终端类型,使用export TERM=xxx命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接