web-dev-qa-db-ja.com

Ruby 1.9.2およびRails 3が開けないRailsコンソール

[gkaykck@main myApplication]$ Rails console
/usr/local/lib/Ruby/1.9.1/irb/completion.rb:9:in `require': no such file to load -- readline (LoadError)
    from /usr/local/lib/Ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
    from /usr/local/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/commands/console.rb:3:in `require'
    from /usr/local/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/commands/console.rb:3:in `<top (required)>'
    from /usr/local/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/commands.rb:20:in `require'
    from /usr/local/lib/Ruby/gems/1.9.1/gems/railties-3.0.3/lib/Rails/commands.rb:20:in `<top (required)>'
    from script/Rails:6:in `require'
    from script/Rails:6:in `<main>'

Rails 3 on Ruby 1.9.2p136、これは大丈夫だと思います。しかし、起動できませんRails consoleアプリはRuby 1.8.7で問題なく動作し、このようなエラーを見たことはありません。

それが何であるかについてのアイデアはありますか?

47
gkaykck

どうやらubuntuとRubyは常に依存関係をキャッチする必要はありません。

first google hit から(ええ、最初の結果をチェックアウトする前に、#2の場所でこのスタックオーバーフローをクリックしました。)

Rubyソースに移動し、次のように入力します。

Sudo apt-get install libreadline5-dev
cd ext/readline
Ruby extconf.rb
make
Sudo make install

したがって、別のディストリビューションを使用している場合は、何らかの方法でreadline(ソース/パッケージ)をインストールしてから、ソースからextconfでmake/installを実行してください。もちろん、gkaykckが提案したことを試しましたが、私のシステムにはまだreadlineがありませんでした。

$ Ruby extconf.rb
checking for tgetnum() in -lncurses... no
checking for tgetnum() in -ltermcap... no
checking for tgetnum() in -lcurses... no
checking for readline/readline.h... no
checking for editline/readline.h... no
49
winfred

RVMを使用する人のためのレシピ:

rvm pkg install readline
rvm remove 1.9.3
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr

詳細については https://rvm.io/packages/readline/

29
Nikolay Moskvin

この問題の別の解決策が必要な場合は、これを実行してください。

Sudo apt-get install libreadline6

次に、gemファイルに以下を追加します。

gem 'rb-readline'

その後

bundle install

そして、あなたはすべて準備ができているはずです。

11
Philip

まず、すべてのRubyバージョンをアンインストールします。

その後、rvm要件を表示します。

rvm requirements

次のようなものが得られます:

Requirements for Linux ( DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10" )

NOTE: 'Ruby' represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X)   
This is the *original* / standard Ruby Language Interpreter  
      'ree'  represents Ruby Enterprise Edition  
      'rbx'  represents Rubinius  

bash >= 4.1 required curl is required git is required (>= 1.7 for
Ruby-head) patch is required (for 1.8 rubies and some Ruby-head's).

To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head), then you
must install and use rvm 1.8.7 first.

Additional Dependencies: 
# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:
  Ruby: /usr/bin/apt-get install build-essential openssl libreadline6 
  libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev 
  libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev 
  ncurses-dev automake libtool bison Subversion

# For JRuby, install the following:
  jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headless
  jruby-head: /usr/bin/apt-get install ant openjdk-6-jdk

# For IronRuby, install the following:
  ironruby: /usr/bin/apt-get install curl mono-2.0-devel

Apt-getを使用してすべての依存関係をインストールします。
その後のインストールRuby 1.8.7。このバージョンは、Ruby 1.9.xを使用する場合に必要です。
これでRuby 1.9.3をインストールできます:

rvm pkg install readline
rvm remove 1.9.3
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr

Apt-getを使用してインストールした場合は、rvm経由でreadlineパッケージをインストールする必要さえないことに注意してください。

5
pisaruk

rvm(Ruby Version Manager) を使用してRubyの異なるバージョンを管理し、バージョンを切り替えることをお勧めします。さまざまなバージョンをコンパイルするのはかなりうまくいきます。また、ディレクトリごとに.rvmrcファイルを作成して、どのバージョンのRubyをどのディレクトリで使用するかをrvmに指示することもできます(必要に応じて、プロジェクトごとのgemセットを使用してください!)

5
futuremint

CentOS 6の場合:

Rubyインストールディレクトリから作業していることを思い出してください。私にとっては:

   /opt/Ruby-1.9.3-p194/ext/readline

次の出力が表示される場合、readlineはインストールされていません。

$ Ruby extconf.rb 
checking for tgetnum() in -lncurses... no
checking for tgetnum() in -ltermcap... no
checking for tgetnum() in -lcurses... no
checking for readline/readline.h... no
checking for editline/readline.h... no

RPMでインストールするには:

yum install readline-devel

次に、それをビルドします。

Ruby extconf.rb 
make
Sudo make install
3
nikc

解決策は、コンパイルしたソースフォルダに移動することですRuby => ext => readlineより

Ruby extconf.rb
make
Sudo make install
1
gkaykck

Gemfileに追加する

gem 'rb-readline'

その後 bundle install

私のためにトリックをしました

1
Steven Luong C

RVMを使用している場合は、readlineを再作成できます。これで問題が解決しました。ここでの手順:

読み込むファイルはありません-readline(読み込みエラー)

0
superluminary

rvm removeを使用してすべてを削除するRubyインストールされています。それでも何かが表示される場合は、 "Ruby"を実行して、rvmを再インストールしてからRuby rvmを使用してインストールする必要があります。

0
user2209623