Ruby on rails 雪豹升级->;重新安装sqlite3 ruby gem时出现问题

Ruby on rails 雪豹升级->;重新安装sqlite3 ruby gem时出现问题,ruby-on-rails,osx-snow-leopard,sqlite3-ruby,Ruby On Rails,Osx Snow Leopard,Sqlite3 Ruby,我得到了Ruby1.8.7(本地编译)、Rails2.3.4、OSX10.6.2和SQLite3Ruby 访问rails应用程序时出现的错误是 NameError:未初始化的常量SQLite3::Driver::Native::Driver::API 历史: 通过使用FW电缆将我的应用程序从旧macbook迁移到新macbook,我升级到了snow leopard。所有的一切都完美地运行了几个月,但昨天我需要安装watir,它依赖于rb-appscript,由于libsqlite3.dylib中

我得到了Ruby1.8.7(本地编译)、Rails2.3.4、OSX10.6.2和SQLite3Ruby

访问rails应用程序时出现的错误是

NameError:未初始化的常量SQLite3::Driver::Native::Driver::API

历史
通过使用FW电缆将我的应用程序从旧macbook迁移到新macbook,我升级到了snow leopard。所有的一切都完美地运行了几个月,但昨天我需要安装watir,它依赖于rb-appscript,由于libsqlite3.dylib中的“错误架构”错误,它没有生成。我认为构建是在旧机器上完成的,所以我想重建sqlite3 ruby:

$sudo gem卸载sqlite3 ruby

$sudo gem安装sqlite3 ruby

构建本机扩展。这可能需要一段时间…
错误:安装sqlite3 ruby时出错:
错误:无法生成gem本机扩展

/usr/local/bin/ruby extconf.rb
正在-lrt中检查fdatasync()。。。否
正在检查sqlite3.h。。。是
正在-lsqlite3中检查sqlite3_open()。。。否
*extconf.rb失败*
由于某些原因无法创建Makefile,可能是缺少
必要的库和/或标题。查看mkmf.log文件了解更多信息
细节。您可能需要配置选项

sqlite3库似乎工作不正常。我尝试安装macports sqlite3(sudo port install sqlite3)并使用它,但结果相同。。。所以我从头开始重建sqlite3。。下载->配置->制作->制作安装。在此之后,gem现在构建得非常完美,但在rails中不起作用,本文顶部给出了错误

我真的不确定从这里走到哪里,因为我已经尝试了以下方法

  • 从最新的源()重新生成sqlite3
  • 重新安装的SQLite3Ruby(sudogem卸载SQLite3Ruby&&sudogem安装SQLite3Ruby)
  • 使用macports中的sqlite3(sudo端口安装sqlite3&&sudo gem安装sqlite3 ruby)
  • 重新安装rails(sudogem安装rails sqlite3 ruby)并将environment.rb更新为rails 2.3.5
  • 没有用,我仍然得到这个错误:

    NameError:未初始化的常量SQLite3::Driver::Native::Driver::AP
    来自/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active\u support/dependencies.rb:105:in
    const\u missing'
    从/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:in
    open'
    来自/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/database.rb:76:在“初始化”中

    顺便说一句,我已经从雪豹CD安装了Xcode


    我能做些什么来解决这个问题?

    我在唐·帕克的博客上找到了一些关于这个问题的指导:

    他的解决方案指向以下线程的堆栈溢出:


    关于ln命令的答案似乎解决了我的问题。希望它也能帮助你。

    我在唐·帕克的博客上找到了一些关于这方面的指导:

    他的解决方案指向以下线程的堆栈溢出:


    关于ln命令的答案似乎解决了我的问题。希望它也能帮助您。

    如果gem没有构建,那不是因为您需要从源代码重新构建sqlite3,而是为了构建gem,您需要sqlite3开发人员库

    在大多数Linux/Unix系统上,您可以通过执行“sudo apt get install sqlite3 dev”来安装它们,但是我不确定它如何与Macports配合使用,但请确保您拥有该软件包。在安装gem时,您必须确保它们位于您的路径中,或者传递它们所在的目录(请参阅gem的输出,以获取有关执行此操作的选项的提示)


    我的Mac上运行的sqlite3很好,都是1.8.7版本,现在更新的是1.9.1 Ruby。您可能还需要确保安装了XCode开发人员工具。

    如果gem没有生成,那不是因为您需要从源代码重新生成sqlite3,而是为了生成gem,您需要sqlite3开发人员库

    在大多数Linux/Unix系统上,您可以通过执行“sudo apt get install sqlite3 dev”来安装它们,但是我不确定它如何与Macports配合使用,但请确保您拥有该软件包。在安装gem时,您必须确保它们位于您的路径中,或者传递它们所在的目录(请参阅gem的输出,以获取有关执行此操作的选项的提示)


    我的Mac上运行的sqlite3很好,都是1.8.7版本,现在更新的是1.9.1 Ruby。您可能还需要确保安装了XCode开发人员工具。

    谢谢您的回答。以下是我为解决问题所做的:

  • 将ruby1.8.7完全重新安装到/usr/local,请参见此处:

    注意:在mac上重新编译ruby时,readline不起作用,因此我也必须从头开始构建它,并确保添加--with readline dir选项来配置:

    ./configure--enable shared--enable pthread CFLAGS=-D_XOPEN_SOURCE=1--prefix=/usr/local--with readline dir=/usr/local

  • 将sqlite3完全重新安装到/usr/local

  • 使用sudo gem install XXX在系统上重建所有gem,包括sqlite3 ruby。这仅在特定于平台的gems中是必需的,但我发现在一个oneliner中安装所有内容会更快:

    sudo gem安装gem1 gem2。。。gemN——无ri——无rdoc

  • 我尝试使用ruby1.9,但由于gems和插件中的依赖关系被破坏,所以我不建议切换到1.9,除非您进行了一些繁重的调试,并且知道如何恢复旧系统


    终于一切又开始了

    谢谢你的回答。以下是我为解决问题所做的:

  • 将ruby1.8.7完全重新安装到/usr/local,请参见此处:

    注意:在mac上重新编译ruby时,readline不起作用,所以我不得不构建t
    sudo port install rb-sqlite3 +universal
    
    checking for sqlite3.h... yes
    checking for sqlite3_libversion_number() in -lsqlite3... no
    sqlite3 is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'
    
    Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1 for inspection.
    
    asplode('sqlite3') unless find_library 'sqlite3', 'sqlite3_libversion_number'
    
      require 'mkmf'
       find_library 'sqlite3', 'sqlite3_libversion_number'
    
      sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])
    
    require 'mkmf'
      sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr']) 
      find_library 'sqlite3', 'sqlite3_libversion_number'
    
    sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])
    
     sudo ruby ./setup.rb