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

时间:2013-07-14 21:22:56

标签: ruby-on-rails sqlite

当我尝试在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>'

如何避免此错误消息并继续进行?

19 个答案:

答案 0 :(得分:118)

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

视窗: C:\Ruby21\lib\ruby\gems\2.1.0\specifications

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

s.require_paths=["lib"]

将其更改为

s.require_paths= ["lib/sqlite3_native"]

答案 1 :(得分:19)

见:https://stackoverflow.com/a/39136421/6755206

幸运的是,你不必转向ruby 2.0
经过无尽的尝试后,有一个解决这个问题的方法......

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

的步骤

  • gem uninstall sqlite3 --all

来源

构建

  • 在提取的目录中运行命令行
  • 确保已安装C编译器并将其添加到PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • 你会找到一个名为“pkg&#39;产生

安装

  • 输入dir&#39; pkg&#39;
  • gem install --local sqlite3-xxx.gem(&#39; xxx&#39;是版本代码)

检查

  • irb
  • require 'sqlite3'

答案 2 :(得分:16)

由于pull request #229已合并,因此可以按git:键安装sqlite3。在Gemfile

中,可以通过此添加轻松使用sqlite3
gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

这适用于RubyInstaller-2.4及更新版本。当您运行mingw-w64-x86_64-sqlite3时,它会自动安装所需的pacman软件包bundler install

RubyInstaller2 FAQ中,Windows上的Rails还有一些提示。

答案 3 :(得分:13)

Total Limit

这解决了我的问题。

gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

答案 4 :(得分:9)

只需编辑Gemfile并添加gem 'sqlite3', platform: :ruby

答案 5 :(得分:5)

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

bundle update sqlite3

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

bundle update nokogiri

享受您的Ruby应用程序!

答案 6 :(得分:4)

卸载并重新安装sqlite3 gem对我有用。

gem uninstall sqlite3

bundle

答案 7 :(得分:4)

这对我有用:

/\d/

答案 8 :(得分:4)

最佳官方安装

Im使用Rails 5.2.1p57,Windows 10 只需执行以下几行就可以解决问题

noop

并卸载所有已安装的版本。再次执行以下命令

gem uninstall sqlite3

您现在完成。 让我知道问题是否仍然存在。

答案 9 :(得分:2)

如果最佳答案不起作用,我发现的修复只是转到你的Gemfile并在sqlite3之后添加版本号1.3.11(而不是1.3.9)。因此,Gemfile中的行现在应该是:

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

答案 10 :(得分:2)

将Ruby版本升级到2.5.X时,我遇到了相同的错误。我用<header id="home"> <div class="bg-img" style="height:100%;width:100%;background-image:none;background-size:cover;"> <div id="banner-load"></div> <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js'> </script> <script> var images = ['background11.jpg', 'background12.jpg', 'background13.jpg', 'background14.jpg', 'background15.jpg']; function getRandomImage() { return 'img/'+images[Math.floor(Math.random() * images.length)]; } function setRandomImage() { $('.bg-img').css('backgroundImage', 'url('+getRandomImage()+')'); } $(function(){ setRandomImage(); }); </script> <div class="overlay"></div> </div>跟踪到sqlite3在2.5版中不可用,然后我将GemFile更改为gemsqlsql3,将其更改为sqlite3-ruby,然后卸载了sqlite3,最后运行了{ {1}}。

我不知道是什么原因...我读到“ sqlite3”还不能用于ruby 2.5,但是我不确定。

答案 11 :(得分:2)

为避免此错误,请确保将gem sqlite3添加到您的Gemfile中。 然后将Sqlite download link中的“ exe”和“ dll”提取到Ruby的bin文件夹中。 如果问题仍然存在。试试这个:

bundle update

gem uninstall sqlite3

在sqlite3的多个版本之间进行选择,请选择最后一个选项“所有版本”。在此处输入最后一个号码

  

选择要卸载的gem:
  1. sqlite3-1.3.13
  2. sqlite3-1.3.13-x64-mingw32
  3.所有版本
  > 3   。
  。
  如果删除此gem,将无法满足这些依赖性。
  继续卸载吗? [yN]
  >   y

gem install sqlite3 --platform=ruby

rails s

这应该有效。

如果以上方法对您有用,请通读此link,以获取更多说明。

答案 12 :(得分:1)

这也发生在我身上。事实证明我最初安装了SQLite 1.3.10,但后来我从Rails教程截屏项目中复制了一些宝石,并列出了SQLite 1.3.9。然后我得到了你做的同样的错误。我把它改回1.3.10并且有效。

(这是在Windows 7上。我在Cloud9 IDE上运行截屏教程)。

答案 13 :(得分:1)

已更新

将以下内容添加到为我修复的Gemfile中: gem'sqlite3','1.4.0',平台::ruby

答案 14 :(得分:1)

这是唯一适用于我的解决方案,源自this GitHub issue post

  1. https://www.sqlite.org/download.html获取soconite3源的autoconf版本。
  2. 启动MSYS shell。
  3. 在sqlite3的解压缩位置,仅配置静态版本以避免将DLL保留在PATH上:./configure --disable-shared
  4. 构建并安装它:make install DESTDIR=/c/dev/ruby/tmp。您可以更改目录。
  5. 打开Windows的命令提示符并运行gem uninstall sqlite3 --all以删除所有现有的sqlite3宝石。
  6. 再次在Windows命令提示符下,构建并安装sqlite3 gem:gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\lib。那些include和lib目录可能不同,所以请先查看。
  7. 我在Windows 10上使用Ruby版本2.5.1和Rails版本5.2.0。

答案 15 :(得分:0)

我找到了!我看到了这个https://www.youtube.com/watch?v=lsrzvX0qzmA
我安装了:     Rails版本:5.2.1     Ruby版本:2.5.3(x64-mingw32) Sqlite版本1.3.13
我有你的问题... 我的解决办法:

  1. 在您的安装文件夹中,例如C:\ Ruby25-x64 \ lib \ ruby​​ \ gems \ 2.5.0 \ gems \
        您有文件夹:     “ sqlite3-1.3.13”     “ sqlite3-1.3.13-x64-mingw32”
  2. 查找文件
         C:\ Ruby25-x64 \ lib \ ruby​​ \ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. 将其复制到C:\ Ruby25-x64 \ lib \ ruby​​ \ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so      (可能是文件夹不存在-创建并粘贴)

答案 16 :(得分:0)

对于OSX用户,这可能是由于使用ruby管理器(例如rvm)导致的。

如果您编辑〜/ .bash_profile并添加以下内容:

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

您可以解决此问题。尝试重新构建之前,请重新启动Xcode。

实际问题在此处跟踪:https://openradar.appspot.com/28726736)。

全部信用归功于:https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

答案 17 :(得分:0)

为此更改Gemfile中的sqlite3 gem:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

然后运行:

bundle install

答案 18 :(得分:0)

我有同样的探针,但它很简单,

gem uninstall sqlite3 --all

然后运行

gem install sqlite3

一切都应该从那里开始。