【问题标题】:Error with new Rails 3.2.8 project - `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)新 Rails 3.2.8 项目出错 - `require': 无法加载此类文件 - sqlite3/sqlite3_native (LoadError)
【发布时间】:2012-09-02 22:59:25
【问题描述】:

我刚刚创建了一个新的 amazon Linux 实例并安装了 ruby​​ 1.9.3 和 rails 3.2.8。

创建新项目后,我立即收到由于 sqlite3 导致的失败。错误是:

[root@xxxxx fun]# rails server
/usr/local/share/gems/gems/sqlite3-1.3.6/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/share/gems/gems/sqlite3-1.3.6/lib/sqlite3.rb:6:in `rescue in <top     (required)>'
    from /usr/local/share/gems/gems/sqlite3-1.3.6/lib/sqlite3.rb:2:in `<top     (required)>'

我已经确认 sqlite3 在 Rails 之外运行良好(即我成功创建了一个数据库,使用 ruby​​ 代码进行了插入/读取)。下面是在 irb 中加载 sqlite3 的快速演示:

irb(main):001:0> require 'sqlite3'
=> true

我完全了解捆绑安装。 sqlite3 版本为 1.3.6

我安装了以下软件包:

ruby19-1.9.3.0-7.17.amzn1.i686
ruby19-devel-1.9.3.0-7.17.amzn1.i686
ruby19-irb-1.9.3.0-7.17.amzn1.noarch
ruby19-libs-1.9.3.0-7.17.amzn1.i686
rubygem19-io-console-0.3-7.17.amzn1.i686
rubygem19-rdoc-3.9.4-7.17.amzn1.i686
rubygems19-1.8.11-7.17.amzn1.noarch
sqlite-3.6.20-1.8.amzn1.i686
sqlite-devel-3.6.20-1.8.amzn1.i686

有什么想法可以让事情正常进行吗?谢谢!

更新 为了“有趣”,我从我的 Gemfile 中注释掉了 gem sqlite3 行并再次尝试了“rails server”。首先它抱怨没有 javascript 运行时(我可以修复),但随后它得到了以下信息。我的安装似乎出了点问题。

[root@xxxx fun]# rails server
/usr/local/share/gems/gems/railties-3.2.8/lib/rails/railtie/configuration.rb:85:in `method_missing': undefined method `active_record' for #<Rails::Application::Configuration:0x9e68f58> (NoMethodError)
    from /srv/rails/fun/config/application.rb:54:in `<class:Application>'
    from /srv/rails/fun/config/application.rb:13:in `<module:Fun>'
    from /srv/rails/fun/config/application.rb:12:in `<top (required)>'

【问题讨论】:

  • 感谢您的建议,我之前看过那个帖子并排除了它。为了安全起见,我尝试了它建议的步骤,但我仍然看到同样的问题。
  • 据我所知,amazon linux 使用 yum 包管理器,当您运行以下命令时会发生什么:yum install ruby-devel sqlite-devel?
  • 是的,这个系统正在使用 yum。我检查了软件包,这是我安装的(ruby-devel 提取 1.8.7 代码)。我用我已安装的软件包列表更新了原始帖子。似乎所有正确的东西都在那里。我不明白为什么独立的 ruby​​ 脚本可以工作,但 rails croaks - 某种类型的加载路径问题?

标签: ruby-on-rails ruby sqlite


【解决方案1】:

您可能遇到了路径问题。

查看您是否安装了多个版本的 Ruby、Rails 或 gem:

find / | grep bin/ruby

   查找 / | grep bin/rails 查找 / | grep bin/gem

在 Amazon 服务器上,我通常保持系统 Ruby 不变,并使用出色的 ruby​​-build 脚本(我认为比 RVM 更好)安装我自己当前的 Ruby。

https://github.com/sstephenson/ruby-build

如果您确实有多个 Ruby,我建议您将环境设置为选择一个,例如通过使用 ruby-build 或在您的 .bashrc 文件或 /etc/environment 文件中设置您的 PATH,如下所示:

PATH=/opt/ruby/1.9.1-p134/bin;$PATH

如果您使用的是 RVM,我建议您将其卸载并更改为使用 ruby​​-build。

要卸载 RVM,我使用这个脚本:

https://github.com/SixArm/sixarm_unix_shell_scripts/blob/master/rvm-uninstall-danger

【讨论】:

  • 谢谢乔尔!这做到了(最终)。我之前已经删除了 Ruby 1.8.7 的所有痕迹,所以系统上只有 1.9.3(该过程中的某些东西一定导致了我的问题)。今天我卸载了所有的gem,以普通用户的身份使用ruby-build安装1.9.1-p134,然后重新安装了rails 3.2.8。我现在可以成功创建一个新项目并运行它。感谢一百万的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 2013-07-12
  • 2018-08-19
  • 2013-03-21
  • 2014-01-17
相关资源
最近更新 更多