代码之家  ›  专栏  ›  技术社区  ›  user10479

XP上的Ruby on rails msvcrt-ruby191.dll问题

  •  3
  • user10479  · 技术社区  · 14 年前

    我试图在XP professional上运行Rails3并遵循这里的教程 http://railstutorial.org 我一直收到以下错误,甚至试图返回静态页面。消息是,在动态链接库msvcrt-ruby191.dll中找不到过程入口点rb庀str2cstr

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

    我也尝试过gem install mongrel——pre和给出的说明 http://www.ruby-forum.com/topic/202770#882858 ,但什么都没用

    error message

    6 回复  |  直到 14 年前
        1
  •  6
  •   the Tin Man    12 年前

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

    ruby -v => 1.9.2p0 
    rails -v => 3.0.0 
    gem -v => 1.3.7
    
    1. 从下载sqlitedll-3_7_3.zip http://sqlite.org/download.html
    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
  •  2
  •   Dave Thomas    13 年前

    rake db:migrate 生成错误消息:

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

    决议如下:

    1. 删除gemlock。
    2. 将SQLite版本更改为1.3.1。

    rake db:迁移 现在产生正确的结果。

        3
  •  2
  •   the Tin Man    12 年前

    我的版本:

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

    Gemfile公司:

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

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

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

        4
  •  0
  •   Cab Jones    14 年前

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

        5
  •  0
  •   rogerdpack    14 年前

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

        6
  •  0
  •   denisv    14 年前

    我对XP Pro和Rails教程也有同样的问题。我安装了SQLite version 1.2.5,它与本教程第2章中的内容相匹配。

    但当我看到roger关于使用1.3.1版本的评论时,我安装了那个版本(使用“gem install sqlite3 ruby-v 1.3.1”)。但是它给出了一条关于在这个gem中使用SQLite version 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”就工作了。