【问题标题】:rvm conflit with sqlite3rvm 与 sqlite3 冲突
【发布时间】:2010-07-22 10:57:05
【问题描述】:

$: /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

似乎 ruby​​ 不是正确的版本(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

有什么想法吗?

非常感谢:)

【问题讨论】:

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


    【解决方案1】:

    在迁移到 1.9.2p0 后遇到了同样的问题,但在 Snow Leopard 上重新启动控制台就可以解决问题。看来 rvm 可能搞糊涂了。

    【讨论】:

    • 添加和删除 .rmvc 文件时出现此问题,重新启动控制台有效,谢谢!
    【解决方案2】:

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

    我必须使用以下命令才能使用 rails 命令:

    rubywhich railsg scaffold User name:string bio:text

    有什么办法吗?

    我终于找到了原因。看起来gem install rails 无法在 rvm 中为 rails 安装正确的二进制文件。而rails 仍然是引用/usr/bin/rails,它有一个#! 行指向System ruby​​。

    你可以看到它:

    head -1 `which rails`
    

    返回:

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

    将其更改为:

    #!/usr/bin/env ruby
    

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

    【讨论】:

    • 我遇到了同样的问题。我使用系统 gem 和 ruby​​ 创建了 rails 应用程序,然后进入 rails 应用程序并创建了一个 .rvmrc。我相信这就是我的问题出现的原因。
    • 这从命令行解决了我的问题。但是,我确实必须重新启动 textmate 才能从那里获取更改。
    • 这正是正在发生的事情。我的服务器上有两个版本的 rails:来自 Apple 的版本和 Homebrew 团队提供的最新版本。
    【解决方案3】:

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

    我卸载了 sqlite3 gems 然后我运行了:

    gem install sqlite3
    

    它奏效了。请注意,现在 sqlite3-ruby gem 现在建议使用“sqlite3”。

    【讨论】:

      【解决方案4】:

      我不知道您的情况是如何发生的,但在我看来,Rails 已尝试在您的系统安装了 Ruby 的情况下运行,但正在从 1.9.2 加载路径加载 gem。很奇怪。

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

      检查您是如何启动 Rails 的,并且您没有在 Ruby 版本之间弄乱路径、链接或别名

      【讨论】:

        【解决方案5】:

        您可能需要运行

        rvm reload
        

        【讨论】:

          【解决方案6】:

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

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

          问候 迈克尔

          【讨论】:

            【解决方案7】:

            我在zshMacVim 中遇到了这个确切的错误,并最终将其追溯到this RVM issue. 解决方案是将我在.zshrc 中的RVM 采购移动到.zshenv。立即工作。只是碰巧有人像我一样偶然发现了这种情况。

            【讨论】:

              【解决方案8】:

              zsh、rvm 和 vim 存在一个已知问题。

              最新的解决方案是在你的 .vimrc 中将 shell 设置为 sh

              set shell=sh
              

              This blog 列出了所有解决方案

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2014-02-25
                • 1970-01-01
                • 2011-10-08
                • 1970-01-01
                • 1970-01-01
                • 2013-04-29
                • 1970-01-01
                • 2018-03-02
                相关资源
                最近更新 更多