火车失事。 Rails需要RubyGems> = 1.3.2

时间:2010-03-11 02:46:04

标签: ruby-on-rails

更新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

更新我注意到哪个红宝石和哪个红宝石是不同的位置

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

我最近将ruby升级到ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10],我认为我打破了铁轨。当我尝试加载rails时。我得到一个奇怪的信息。请帮忙!

$ 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 个答案:

答案 0 :(得分:2)

您是否查看了Ruby版本管理器或rvm(http://rvm.beginrescueend.com/)。我知道它可以在Linux和Mac OS X上运行。

基本上它是一个管理不同版本的ruby及其所有相关“片段”的工具。当朋友推荐我尝试它时,我遇到了类似的问题,它为我解决了这个问题。

答案 1 :(得分:1)

我刚刚解决了同样的问题。我不确定它是最有效的,但我从头开始重建所有内容,详见hivelogic,将红宝石和红宝石宝石安装到'/ usr / local'

记得改变我的路径:

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

答案 2 :(得分:1)

如果您在Mac上运行此操作(我猜测您的跟踪中出现的'darwin'),如果您有时输入gem whatever而不是sudo gem whatever。检查你的〜/ .gem或〜/ .gems目录,看看是否有意外安装过的宝石。

如果是,请删除/重新安装。

答案 3 :(得分:0)

我不太确定我是否记得正确,但是当我从Rails 2.3.4升级到Rails 2.3.5时,我认为我遇到了类似的问题。在这种情况下,我认为问题是由于安装了Rack 1.1.0和Rack 1.0.1(在Rails升级期间安装了Rack 1.1.0)。我摆脱了1.1.0,事情又开始了。

当我从Ruby 1.8.6升级到Ruby 1.8.7(在Windows上)时,我没有遇到任何问题。

我可能错了,但也许至少会为你提供一个新的尝试方向。

答案 4 :(得分: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下载并安装。这可能不是完全需要的,但我想确保一切都很干净。请记住,宝石与您的ruby版本相关联,因此升级时您可能需要重新安装所有宝石。我不确定是否有解决方法,但我有兴趣知道是否这样。

  • 在我的情况下,我作弊。因为我从1.8.6开始 - > 1.8.7,我决定尝试将旧Ruby从旧Ruby位置复制到新位置:“cp -R /usr/lib/ruby/gems/1.8 / usr / local / lib / ruby​​ / gems”。它对我有用,但我还在测试,可以想象一个人可能遇到问题,所以要小心。当然,这比重新安装一切更方便。

  • 我正在用nginx运行乘客。在Passenger配置中,它将具有指向Ruby二进制文件和Passenger gem的条目。一定要改变这些!我花了几分钟想知道我的应用程序仍然正常启动,即使宝石已经消失了......这是因为nginx的配置仍然直接指向/usr/bin/ruby1.8 - oops。

希望此信息可以帮助某人。

答案 5 :(得分:-3)

您需要在两个不同的目录之间创建一个符号链接。

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