新Rails 3.2.8项目出错 – “require”:无法加载此类文件 – sqlite3 / sqlite3_native(LoadError)

我刚刚创建了一个新的亚马逊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 ' from /usr/local/share/gems/gems/sqlite3-1.3.6/lib/sqlite3.rb:2:in `' 

我已经确认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 # (NoMethodError) from /srv/rails/fun/config/application.rb:54:in `' from /srv/rails/fun/config/application.rb:13:in `' from /srv/rails/fun/config/application.rb:12:in `' 

您可能遇到路径问题。

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

 find / | grep bin/ruby 

找/ | grep bin / rails find / | grep bin / gem

在亚马逊服务器上,我通常保持系统Ruby不变,并使用优秀的ruby-build脚本安装我自己的当前Ruby(在我的意见中优于RVM)。

 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