rvm与sqlite3冲突

时间:2010-07-22 10:57:05

标签: ruby-on-rails rubygems ruby-on-rails-3

$:/Users/dev/.rvm/gems/ruby-1.9.2-head@rails3/gems/sqlite3-ruby-1.3.1/lib/sqlite3/sqlite3_native.bundle:[BUG]分段错误     ruby 1.8.7(2009-06-12 patchlevel 174)[universal-darwin10.0]

Abort trap

似乎红宝石不是正确的版本(1.8.7)但是:

$: ruby - v
$: ruby 1.9.2dev (2010-07-15 revision 28653) [x86_64-darwin10.4.0]



$: gem list

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.0.beta4, 3.0.0.beta3)
actionpack (3.0.0.beta4, 3.0.0.beta3)
activemodel (3.0.0.beta4, 3.0.0.beta3)
activerecord (3.0.0.beta4, 3.0.0.beta3)
activeresource (3.0.0.beta4, 3.0.0.beta3)
activesupport (3.0.0.beta4, 3.0.0.beta3)
arel (0.4.0, 0.3.3)
builder (2.1.2)
bundler (0.9.26)
erubis (2.6.6)
i18n (0.4.1, 0.3.7)
mail (2.2.5)
memcache-client (1.8.5)
mime-types (1.16)
polyglot (0.3.1)
rack (1.1.0)
rack-mount (0.6.9)
rack-test (0.5.4)
rails (3.0.0.beta4, 3.0.0.beta3)
railties (3.0.0.beta4, 3.0.0.beta3)
rake (0.8.7)
rdoc (2.5.9)
sqlite3-ruby (1.3.1)
text-format (1.0.0)
text-hyphen (1.0.0)
thor (0.13.8)
treetop (1.4.8)
tzinfo (0.3.22)
will_paginate (3.0.pre)

更多信息:

$: ~ dev$ ruby -v
ruby 1.9.2dev (2010-07-15 revision 28653) [x86_64-darwin10.4.0]
$ :~ dev$ rails -v



/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:827:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:261:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:68:in `gem'
from /usr/bin/rails:18

有什么想法吗?

非常感谢:)

8 个答案:

答案 0 :(得分:22)

移动到1.9.2p0后出现同样的问题,但是在Snow Leopard上重新启动控制台就行了。似乎rvm可能已经混淆了。

答案 1 :(得分:6)

Snow Leopard上的同样问题;即使在rvm 1.9.2@rails3下,我也可以看到正确的rails版本号。

我必须使用以下命令来使用rails命令:

ruby which rails g scaffold User name:string bio:text

任何解决方案?

我终于找到了原因。看起来gem install rails无法在rvm中为rails安装适当的二进制文件。而且rails仍然是引用/usr/bin/rails,其中有#!行指向系统红宝石。

你可以看到它:

head -1 `which rails`

返回:

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

将其更改为:

#!/usr/bin/env ruby

将解决问题。我不知道这个问题是否会影响其他可执行脚本的gem安装,但是为什么gem不能将rails安装到rvm自己的bin路径对我来说是一个谜。无论如何,这个解决方法对我来说很脏。

答案 2 :(得分:5)

使用ree-1.8.7-2011.03时遇到同样的问题。 (Ruby企业版)

我卸载了sqlite3宝石然后我跑了:

gem install sqlite3

它有效。请注意,sqlite3-ruby gem现在建议立即使用'sqlite3'。

答案 3 :(得分:3)

我不知道你的情况是怎么发生的,但我认为Rails试图在你的系统安装Ruby的情况下运行但是从1.9.2加载路径加载gems。很奇怪。

你在shell中看到了正确的Ruby版本(RVM在本地路径中具有优先权),但这显然不是Rails的启动版本。

检查你是如何启动Rails的,以及你没有Ruby版本之间的路径或链接或别名

答案 4 :(得分:1)

您可能需要运行

rvm reload

答案 5 :(得分:0)

一堆更新(rvm到1.5.2和ruby到1.9.2-p180)之后的同样问题

控制台重启对我不起作用,更新到rails 3.0.6将错误更改为mysql2而不是sqlite3的seg错误,重新安装mysql2终于为我做了诀窍。

此致 迈克尔

答案 6 :(得分:0)

我在zshMacVim中遇到了这个确切错误,并最终将其追溯到this RVM issue.解决方案是将我在.zshrc中的RVM采购转移到{ {1}}。立即工作。只是发布关机,有人偶然发现了我的方式。

答案 7 :(得分:0)

zsh,rvm和vim存在已知问题。

最新的解决方案是将shell设置为.vimrc

set shell=sh

This blog列出了所有解决方案