Ruby on rails 无法在ruby on rails上加载这样的文件--sqlite3/sqlite3_native(LoadError)
当我尝试在Ruby 2.0.0上使用Rails 4.0.0设置服务器的基本安装和启动时,我会遇到以下错误消息Ruby on rails 无法在ruby on rails上加载这样的文件--sqlite3/sqlite3_native(LoadError),ruby-on-rails,sqlite,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
/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>'
/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:在'require'中:无法加载此类文件--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'
来自/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in`'
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层)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`'
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'
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`'
从箱子/轨道:4:in“require”
从箱子/轨道:4:in`'
如何避免此错误消息并继续操作?查找您的sqlite3 gemspec文件。一个例子是
/usr/local/share/gem/specifications/sqlite3-1.3.7.gempec
窗口:
C:\Ruby21\lib\ruby\gems\2.1.0\specifications
您应该根据Rubygem路径和sqlite3版本进行调整。
编辑上面的文件并查找下面的行
s.require_paths=["lib"]
换成
s.require_paths= ["lib/sqlite3_native"]
这也发生在我身上。原来我最初安装了SQLite 1.3.10,但后来我从Rails教程的screencasts项目中复制了一些gem,它列出了SQLite 1.3.9。然后我犯了和你一样的错误。我把它改回了1.3.10,它成功了
(这是在Windows 7上。我正在Cloud9 IDE上运行screencast教程)。卸载并重新安装sqlite3 gem对我来说很有效
gem uninstall sqlite3
bundle
如果上面的答案不起作用,我发现的一个修复方法就是直接转到您的GEM文件,并在sqlite3之后添加版本号1.3.11(而不是1.3.9)。因此,文件中的行现在应为:
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '1.3.11'
见:
幸运的是,您不必切换到ruby 2.0经过无休止的尝试,这个问题有一个解决方案
台阶 之前
gem卸载sqlite3--all
- 下载最新的sqlite3 ruby
- 解开包裹
- 在提取的目录中运行命令行
- 确保已安装C编译器并将其添加到PATH
gem安装bundler
bundle安装
rake原生gem
- 您将发现生成了一个名为“pkg”的目录
- 输入dir'pkg'
('xxx'是版本代码)gem安装——本地sqlite3 xxx.gem
irb
需要'sqlite3'
bundle更新sqlite3
在这一次关于nokogiri的错误之后,您可能会遇到另一个类似的错误,请使用以下命令进行修复:
bundle更新nokogiri
享受你的Ruby应用 由于已经合并,sqlite3可以按照git:键安装。通过在Gemfile
中添加此项,可以轻松使用sqlite3:
gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"
这适用于RubyInstaller-2.4及更新版本。当您运行bundler install
时,它会自动安装所需的pacman包mingw-w64-x86\u 64-sqlite3
在中有更多关于Windows上Rails的提示。这是唯一适合我的解决方案,源自:
/configure--disable shared
makeinstalldestdir=/c/dev/ruby/tmp
。您可以更改目录gem uninstall sqlite3--all
以删除所有现有sqlite3 gemgem安装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目录可能不同,所以首先检查一下我在Windows 10上使用Ruby 2.5.1版和Rails 5.2.0版。只需编辑Gemfile并添加
gem'sqlite3',platform::Ruby当我将Ruby版本升级到2.5.X时,我遇到了相同的错误。我通过rails任务跟踪--trace
发现sqlite3在版本2.5中不可用,然后在卸载gem“sqlite3”并最终运行捆绑安装后,我将gem文件gem“sqlite3”更改为“sqlite3 ruby”
我不知道是什么原因。。。我读到ruby 2.5尚未提供“sqlite3”,但我不确定。这对我来说很有效:
gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"
最佳官方安装
Im使用rails 5.2.1p57
gem uninstall sqlite3
gem install sqlite3 --platform=ruby
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby
Windows 10
Ruby 2.5.3
Rails 5.2.2
[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
echo Xcode detected
rvm use system
}
gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"
bundle install
gem uninstall sqlite3 --all
gem install sqlite3