【问题标题】:Ruby on rails msvcrt-ruby191.dll problems on XPXP上的Ruby on rails msvcrt-ruby191.dll问题
【发布时间】:2011-04-17 21:04:23
【问题描述】:

我正在尝试在 XP Profesoinal 上运行 Rails3 并按照此处的教程 http://railstutorial.org 并一直收到以下错误,甚至尝试返回静态页面。消息是程序入口点 rb_str2cstr 不能位于动态链接库 msvcrt-ruby191.dll 中

此外,即使我还没有创建任何模型,该页面也会出现运行时错误“找不到 sqlite3 的驱动程序”。 sqlite3.exe、sqlite3.dll 和 sqlite3.def 都在 bin 文件夹中,我已经运行了 Gem install sqlite3-ruby。

我也尝试过 gem install mongrel --pre 和http://www.ruby-forum.com/topic/202770#882858 给出的说明,但没有任何效果

【问题讨论】:

  • 在 Win7 上遇到完全相同的问题 - 它与运行 XP 无关

标签: ruby-on-rails ruby sqlite


【解决方案1】:

这是我对该问题的最小修复:

ruby -v => 1.9.2p0 
rails -v => 3.0.0 
gem -v => 1.3.7
  1. http://sqlite.org/download.html下载sqlitedll-3_7_3.zip
  2. 将 sqlite3.def 和 sqlite3.dll 复制到 ruby​​/bin
  3. 编辑 Gemfile:

    gem 'sqlite3-ruby', '1.3.1', :require => 'sqlite3'

  4. del Gemfile.lock

  5. bundle install
  6. rake db:migrate

【讨论】:

    【解决方案2】:

    Ruby 1.9.2、Rails 3.0

    rake db:migrate 产生错误消息:

    在动态链接库msvcrt-ruby191.dll中找不到过程入口点rb_str2cstr

    通过以下方式解决:

    1. 删除宝石锁。
    2. 将 SQLite 版本更改为 1.3.1。
    3. 运行:捆绑安装。

    rake db:migrate 现在会产生正确的结果。

    【讨论】:

    【解决方案3】:

    我的版本:

    ruby -v => 1.9.2p0
    rails -v => 3.0.0
    gem -v => 1.3.7
    

    宝石文件:

    gem 'sqlite3-ruby', :require => 'sqlite3'
    

    然后:

    1. 已删除 Gemfile.lock
    2. rake db:迁移

    这修复了您提到的错误(相同的窗口弹出)。

    【讨论】:

    • 我遇到了完全一样的问题,按照你说的解决了。你知道为什么要修复它吗??
    【解决方案4】:

    气象。我试图在 Vista-64 上运行 rake db:migrate。 (同一本书)。

    跟进:我一直试图通过卸载和重新安装东西来解决一些其他问题,但可能把事情搞砸了。当我遇到这个问题时,再多的“gem 卸载”或“捆绑安装”都无法解决。直到我删除了我的 Gemfile.lock 并进行了“捆绑安装”。然后我的“rake db:migrate”运行没有错误。因为所有输出都是“使用 xxx”,所以看起来 bundle 没有安装任何东西,但我会接受的。

    【讨论】:

      【解决方案5】:

      对我来说,这意味着“你需要以某种方式更新你的 sqlite3-ruby gem 版本”http://betterlogic.com/roger/?p=3027

      【讨论】:

        【解决方案6】:

        我在使用 XP Pro 和 Rails 教程时遇到了同样的问题。我安装了 SQLite 1.2.5 版,它与教程第 2 章中所说的一致。

        但是当我看到 roger 关于使用 1.3.1 版本的评论时,我安装了那个版本(使用“gem install sqlite3-ruby -v 1.3.1”)。但它给出了一条关于在这个 gem 中使用 SQLite 版本 3.6.23.1 以及相关网站的消息。于是我下载了它,替换了C:\Ruby192\bin目录下的sqlite3 .exe、.dll和.def文件。

        然后我查看了 gemfile,发现 SQLite 版本是 1.2.5(根据教程)。所以我把它改成了1.3.1,删除了gemfile.lock,再次运行“bundle install”,之后“rake db:migrate”工作了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多