无法加载这样的文件 – 在rails上的sqlite3 / sqlite3_native(LoadError)

我是Ruby on Rails的新手。 当我尝试在ruby 2.0.0上使用rails 4.0.0设置服务器的基本安装和启动时,我遇到了上面的错误信息。

我怎样才能避免这个错误消息,并进一步进行?

完整的错误消息:

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError) from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>' from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require' from /home/penchal/new/site/config/application.rb:7:in `<top (required)>' from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require' from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>' from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap' from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>' from bin/rails:4:in `require' from bin/rails:4:in `<main>' 

find你的sqlite3 gemspec文件。 一个例子是/usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Windows: C:\Ruby21\lib\ruby\gems\2.1.0\specifications

你应该根据你的Rubygempath和sqlite3版本进行调整。 编辑上面的文件并查找以下行

 s.require_paths=["lib"] 

改变它

 s.require_paths= ["lib/sqlite3_native"] 

请参阅: https : //stackoverflow.com/a/39136421/6755206

幸运的是,你不必切换到ruby2.0
有这个问题的解决scheme,经过无休止的尝试…

https://github.com/hwding/sqlite3-ruby-win


脚步

  • gem uninstall sqlite3 --all

资源

build立

  • 在提取的目录中运行命令行
  • 确保你已经安装了你的C编译器并添加到了PATH中
  • gem install bundler
  • bundle install
  • rake native gem
  • 你会发现生成一个名为“pkg”的dir

安装

  • inputdir'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx'是版本号)

检查

  • irb
  • require 'sqlite3'

卸载并重新安装sqlite3 gem为我工作。

 gem uninstall sqlite3 bundle 

如果最上面的答案不起作用,我发现的一个修复只是去你的Gemfile,并在sqlite3之后添加版本号1.3.11(而不是1.3.9)。 所以你的Gemfile中的行现在应该是:

 # Use sqlite3 as the database for Active Record gem 'sqlite3', '1.3.11' 

没有编译的源代码或下载预编译的库将解决这个问题,相信我我试了一切,问题在别的地方。 这是它如何在Windows上工作:

bundle update sqlite3

在这个关于nokogiri后,你可能会得到另一个类似的错误,修复它的命令:

bundle update nokogiri

享受你的Ruby应用程序!

这也发生在我身上。 事实certificate,我原来安装了SQLite 1.3.10,但后来我从Rails教程screencasts项目中复制了一些gem,它列出了SQLite 1.3.9。 然后我得到了同样的错误。 我改回到1.3.10,它的工作。

(这是在Windows 7上。我正在Cloud9 IDE上运行屏幕录像教程)。