cannot load such file -- sqlite3/sqlite3_native (LoadError) on ruby on rails
When I try to setup basic installation and initiation of server using Rails 4.0.0 on Ruby 2.0.0, I'm facing the following error message.
/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>'
How can I avoid this error message and proceed further?
Solution 1:
Find your sqlite3 gemspec file. One example is /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec
Windows:
C:\Ruby21\lib\ruby\gems\2.1.0\specifications
.
You should adjust according with your Rubygem path and sqlite3 version. Edit the file above and look for the following line
s.require_paths=["lib"]
change it to
s.require_paths= ["lib/sqlite3_native"]
Solution 2:
Since pull request #229 has been merged, sqlite3 can be installed per git:
key. It's possible to use sqlite3 easily through this addition in your Gemfile
:
gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"
This works on RubyInstaller-2.4 and newer. It automatically installs the required pacman package mingw-w64-x86_64-sqlite3
when you run bundler install
.
There are some more hints for Rails on Windows in the RubyInstaller2 FAQ.
Solution 3:
see:https://stackoverflow.com/a/39136421/6755206
fortunately, you don't have to switch to ruby 2.0
there is a solution to this issue, after endless trying...
https://github.com/hwding/sqlite3-ruby-win
Steps
Pre
-
gem uninstall sqlite3 --all
Source
- Download the latest sqlite3-ruby, https://github.com/sparklemotion/sqlite3-ruby
- unzip the package
Build
- run command-line in the extracted dir
- make sure you have your C compiler installed and added to PATH
gem install bundler
bundle install
rake native gem
- you'll find a dir named 'pkg' generated
Install
- enter dir 'pkg'
-
gem install --local sqlite3-xxx.gem
('xxx' is version code)
Check
irb
require 'sqlite3'
Solution 4:
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby
This solved the problem to me.
Windows 10
Ruby 2.5.3
Rails 5.2.2