5


0

列車事故。 RailsにはRubyGems> = 1.3.2が必要です

*アップデートIIの問題は解決しましたが、なぜですか?*これはこれまでで最大の頭痛の種でした。 私の問題は解決しましたが、このタスクをどのように達成したのかわかりません。 さらに、次の結果は意味がありません。 私の.profileパス(/ usr / local / bin)は、現在動作しているパス(/ usr / bin /)とは異なります。 OSXユキヒョウのターミナルを閉じた後、作業パスが突然現れました。 ここで何が起こっているの?

作業パスとわかりにくい.profileファイルを次に示します。

$ rails -v
Rails 3.0.0.beta
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
$ gem -v
1.3.6
$ whereis ruby
/usr/bin/ruby
$ whereis rails
/usr/bin/rails
$ whereis gem
/usr/bin/gem
$ which gem
/usr/bin/gem
$ which ruby
/usr/bin/ruby
$ which rails
/usr/bin/rails
$ mate ~/.profile
profile file:
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
if [[ -s /Users/justinz/.rvm/scripts/rvm ]] ; then source /Users/justinz/.rvm/scripts/rvm ; fi

*更新*どのルビとwhereisルビが異なる場所であることに気付きました

which ruby
/opt/local/bin/ruby
whereis ruby
/usr/bin/ruby

最近、rubyを「ruby 1.8.7(2009-06-12 patchlevel 174)[i686-darwin10]」にアップグレードし、レールを壊したと思います。 レールをロードしようとすると。 奇妙なメッセージが表示されます。 助けてください!

$ ruby​​ script / server RailsにはRubyGems> = 1.3.2が必要です。 RubyGemsをインストールして再試行してください:http://rubygems.rubyforge.org

$ which ruby
/usr/local/bin/ruby
$ whereis ruby
/usr/bin/ruby
$ which rails
/usr/local/bin/rails
$ whereis rails
/usr/bin/rails
$ which gem
/usr/local/bin/gem
$ whereis gem
/usr/bin/gem
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin10.2.0]
$ rails -v
Rails 2.3.5
$ gem list

*** LOCAL GEMS ***

actionmailer (2.3.5)
actionpack (2.3.5)
activerecord (2.3.5)
activeresource (2.3.5)
activesupport (2.3.5)
builder (2.1.2)
bundler (0.9.11)
columnize (0.3.1)
erubis (2.6.5)
fastercsv (1.5.1)
ffi (0.6.3)
gbarcode (0.98.16)
i18n (0.3.5)
linecache (0.43)
mail (2.1.3)
memcache-client (1.8.0)
prawn (0.8.4)
prawn-core (0.8.4)
prawn-layout (0.8.4)
prawn-security (0.8.4)
rack (1.1.0, 1.0.1)
rack-mount (0.6.1)
rack-test (0.5.3)
rails (2.3.5)
rake (0.8.7)
ruby-debug (0.10.3)
ruby-debug-base (0.10.3)
rubygems-update (1.3.6)
sqlite3 (0.0.8)
text-format (1.0.0)
thor (0.13.4)
tzinfo (0.3.17)
$ sudo gem install sqlite3-ruby
Password:
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
    ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for fdatasync() in -lrt... no
checking for sqlite3.h... yes
checking for sqlite3_open() in -lsqlite3... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/bin/ruby
    --with-sqlite3-dir
    --without-sqlite3-dir
    --with-sqlite3-include
    --without-sqlite3-include=${sqlite3-dir}/include
    --with-sqlite3-lib
    --without-sqlite3-lib=${sqlite3-dir}/lib
    --with-rtlib
    --without-rtlib
    --with-sqlite3lib
    --without-sqlite3lib


Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/ext/sqlite3_api/gem_make.out

6 Answer


2


Rubyバージョンマネージャーまたはrvm(http://rvm.beginrescueend.com/)を調べましたか。 LinuxとMac OS Xで動作することを知っています。

基本的には、Rubyのさまざまなバージョンとそれに関連するすべての「ピース」を管理するツールです。 友人が私にそれを試してみることを勧めたとき、私は同様の問題を抱えていました、そしてそれは私のためにそれを解決しました。


1


この同じ問題を修正しました。 私はそれが最も効率的かどうかはわかりませんが、http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard [hivelogic]で詳述されているように、すべてをゼロから再構築し、rubyをインストールします「/ usr / local」へのruby gem

パスを変更することを忘れないでください:

export PATH=/usr/local/bin:$PATH


1


これをMacで実行している場合(トレースに表示される「ダーウィン」から推測します)、「sudo gemwhat」の代わりに「gemwhat」と入力すると、このような問題が発生することがあります`。 〜/ .gemまたは〜/ .gemsディレクトリをチェックして、そこにgemが誤ってインストールされていないか確認してください。

その場合、それらを削除/再インストールします。


0


少し前のことを正確に覚えているかどうかはよくわかりませんが、Rails 2.3.4からRails 2.3.5にアップグレードしたときに同様の問題が発生したと思います。 その場合、Rack 1.1.0とRack 1.0.1の両方がインストールされていることが問題の原因であると思います(Rack 1.1.0はRailsのアップグレード中にインストールされました)。 私は1.1.0を取り除き、物事は再び機能し始めました。

Ruby 1.8.6からRuby 1.8.7(Windows)にアップグレードしたときに問題は発生しませんでした。

私は間違っている可能性がありますが、おそらくこれは少なくともあなたに挑戦する新しい方向性を与えるでしょう。


0


私も実際にこの問題に遭遇しました。 私の問題はルビーのアップグレードが原因でした。 Ruby 1.8.6を実行しているやや古いEC2 AMIから始めていましたが、新しい1.8.7で実行したかったのです。 最新の1.8.7 Rubyをダウンロードしてコンパイルし、1.8.6へのリンクを削除しました(これはDebianサーバーなので、/ usr / bin / ruby​​は/usr/bin/ruby1.8へのシンボリックリンクでした。 / usr / local / bin / ruby​​から新しいRubyを実行していました。 大丈夫でした。 しかし、その後、前述の「RailsにはRubyGems> = 1.3.2が必要」というエラーを含む、奇妙な動作が発生し始めました。 ここに私がチェックして実行する必要があったものがありました。他の人にとっては異なる可能性がありますが、うまくいけばこれは役に立つでしょう:

  • rubygemsを削除して再インストールしました: "apt-get remove ruby​​gems" 続いて、rubyforgeからダウンロードしてインストールします。 これは完全に必要ではないかもしれませんが、物事がきれいであることを確認したかったです。 gemはrubyバージョンに関連付けられているため、アップグレードでは、とにかくすべてのgemを再インストールする必要がある場合があることに注意してください。 これに対する回避策があるかどうかはわかりませんが、もしそうなら知りたいです。

  • 私の場合、私はごまかしました。 私は1.8.6→ 1.8.7から行っていたので、 gemを古いRubyの場所から新しい場所「cp -R /usr/lib/ruby/gems/1.8 / usr / local / lib / ruby​​ / gems」にコピーしてみることにしました。 それは私のために働いたが、私はまだテスト中であり、これを行う際に問題が発生する可能性があるため、注意が必要です。 もちろん、すべてを再インストールするよりも確かに便利です。

  • 私はnginxで乗客を走らせています。 Passenger configでは、 RubyバイナリとPassenger gemの両方を指すエントリがあります。 これらを必ず変更してください! 宝石がなくなったにもかかわらず、アプリがどのように適切に起動するのか不思議に思って数分かかりました…​ これは、nginxの設定がまだ/usr/bin/ruby1.8を直接指していたためです-おっと。

この情報が誰かに役立つことを願っています。


-3


2つの異なるディレクトリ間にシンボリックリンクを作成する必要があります。

sudo ln -s / opt / local / bin / ruby​​ / usr / bin / ruby