【问题标题】:Rails console: in `require': cannot load such file -- readline (LoadError)Rails 控制台:在 `require' 中:无法加载此类文件 -- readline (LoadError)
【发布时间】:2014-05-19 21:19:15
【问题描述】:

我的 Rails 应用程序出现了一些错误,我正在尝试通过发出以下命令来启动 Rails 控制台:

rails console

无论我尝试什么,我总是遇到同样的错误:

/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `<top (required)>'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `require'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `require'
    from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

我真的尝试了我在网上找到的所有可能的解决方案,因为很多人都遇到了同样的错误。不幸的是,似乎没有任何效果。当我尝试以下命令时:

ruby /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb

我得到以下输出

checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... no
checking for editline/readline.h... no
*** /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb failed ***

表示缺少某些内容,但使用 apt-get 安装 readline 也没有什么不同。我猜这可能与不兼容的 gem 版本有关,因为控制台前段时间工作过。 readline 是否存在任何已知的版本问题?很多人似乎都遇到过这个 gem 的问题。

【问题讨论】:

  • 我真的发现以下页面很有帮助:github.com/guard/guard/wiki/… 我遇到了 readline 和 irb 以及 rails 控制台的问题。对我来说,我遵循自制部分。

标签: ruby-on-rails ruby console readline


【解决方案1】:

尝试将rb-readline 放入您的Gemfile 并检查https://stackoverflow.com/a/9595841/1905235

【讨论】:

    【解决方案2】:

    如果您运行的是 Rails 4.xSpring 可能会导致此问题。

    尝试停止 Spring 进程bundle exec spring stop

    然后运行bundle exec rails c

    【讨论】:

      【解决方案3】:

      我终于找到了解决办法。这是几个问题的结合(gem 版本、冲突的 readline 库)。

      首先,我重新获取了 readline 库

      sudo apt-get install libreadline-dev
      

      然后我卸载了 ruby​​

      rvm remove 2.1.1
      

      我又安装了 ruby​​

      rvm install 2.1.1
      

      我告诉 RVM 使用默认 (2.1.1) Ruby

      rvm use default
      

      我重新安装了 Rails 和 readline

      gem install rails
      gem install readline
      

      我再次启动控制台时出错,但略有不同:

      /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `require':  /usr/local/lib/libreadline.so.6: undefined symbol: UP - /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/x86_64-linux/readline.so (LoadError)
          from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `<top (required)>'
          from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `require'
          from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `<top (required)>'
          from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `require'
          from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `<top (required)>'
          from script/rails:6:in `require'
          from script/rails:6:in `<main>'
      

      所以按照这个说明 (http://vkarthickeyan.wordpress.com/2012/02/16/mysql-symbol-lookup-error-usrlocalliblibreadline-so-6-undefined-symbol-up/),我开始工作了:

      cd /usr/local/lib
      mkdir temp
      mv libreadline* temp
      ldconfig
      apt-get update
      

      感谢 Hunterboerner 的帮助!

      【讨论】:

        【解决方案4】:

        这在没有 readline 的 Solaris 机器上运行良好,可能对你有用:

        $ bundle exec irb
        irb(main):001:0> require File.expand_path('config/boot')
        => true
        irb(main):002:0> require File.expand_path('config/environment')
        NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
        Gem.source_index called from /export/home/deploy/recon/shared/bundle/ruby/1.8/gems/rails-2.3.18/lib/rails/gem_dependency.rb:21.
        Warning: NLS_LANG is not set. fallback to US7ASCII.
        => true
        irb(main):027:0> require 'console_app'
        => true
        

        【讨论】:

          【解决方案5】:

          不久前我遇到了这个问题,通过输入:rvm requirements 并安装返回的内容来解决。似乎,虽然这是 rvm 的旧版本,所以可能不再相关

          【讨论】:

            【解决方案6】:
            rvm reinstall 2.7.0
            

            为我工作

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-05-27
              • 2017-03-27
              • 1970-01-01
              • 1970-01-01
              • 2022-09-26
              • 2013-03-23
              相关资源
              最近更新 更多