【问题标题】:rails console does not work导轨控制台不起作用
【发布时间】:2025-11-27 14:25:02
【问题描述】:

我在 Windows Vista 上使用 rails 版本 3.0.3 和 ruby​​ 版本 1.9.2p136 (2010-12-15)。脚本控制台给了我以下错误:

加载开发环境(Rails 3.0.3) C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2116:in block in _rl_read_init_file': invalid byte sequence in UTF 8 (ArgumentError) from C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2114:ineach_line' 来自 C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2114:in _rl_read_init_file' from C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2080:inrl_read_init_file' 来自 C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:2500:in readline_initialize_everything' from C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:3726:inrl_initialize' 来自 C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/rbreadline.rb:4720:in readline' from C:/privat/Ruby192/lib/ruby/site_ruby/1.9.1/readline.rb:40:inreadline' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/input-method.rb:115:in gets' from C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:139:inblock (2 个级别) in eval_input' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:273:in signal_status' from C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:138:inblock in eval_input' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:188:in call' from C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:188:inbuf_input' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:103:in getc' from C:/privat/Ruby192/lib/ruby/1.9.1/irb/slex.rb:205:inmatch_io' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/slex.rb:75:in match' from C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:286:intoken' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:262:in lex' from C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:233:inblock (2 个级别) in each_top_level_statement' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in loop' from C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:229:inblock in each_top_level_statement' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in catch' from C:/privat/Ruby192/lib/ruby/1.9.1/irb/ruby-lex.rb:228:ineach_top_level_statement' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:155:in eval_input' from C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:70:inblock in start' 来自 C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:69:in catch' from C:/privat/Ruby192/lib/ruby/1.9.1/irb.rb:69:instart' 来自 C:/privat/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in start' from C:/privat/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:8:instart' 来自 C:/privat/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:23:in <top (required)>' from script/rails:6:inrequire' 来自脚本/rails:6:in `'

我能做什么?

【问题讨论】:

  • 你在'script/rails'中有什么?
  • 您是否尝试执行rails console?这就是在 Rails3 中启动控制台的方法(即您不再使用script 命令)。
  • 是的,我使用的命令是“rails console”。

标签: ruby-on-rails ruby windows console


【解决方案1】:

问题是 Ruby1.9.2 有一些编码问题...您必须检查您的数据库驱动程序是否没有给出错误..您的服务器是否运行?我推荐你使用 Ruby187

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我花了几个小时试图修复它,重建 ruby​​ 等等......对于 LANG= 的任何设置都失败了。

    最后在代码中发现是在加载init文件的时候,也就是~/.inputrc。

    我在有问题的计算机中的 $HOME 没有 ~/.inputrc... 我试图创建一个空的并且... 成功了!

    所以试试touch ~/.inputrc

    【讨论】:

      【解决方案3】:

      我刚刚在使用 rails 4.1.1 时遇到了同样的问题,结果发现我的 ~/.inputrc 文件是使用 ISO-8859-1 编码进行编码的。将文件转换为 UTF-8 后,一切正常:

      $ iconv --from-code=ISO-8859-1 --to-code=UTF-8 ~/.inputrc >out
      $ mv out ~/.inputrc
      

      要检查您的inputrc 文件的编码是什么,请使用:

      $ file --mime-encoding ~/.inputrc
      

      【讨论】: