Error on "rails new" command (using rbenv) - ruby-on-rails

I have rbenv installed, ruby, and rails installed, but the command to create the new rails project is causing an exception around sqlite.
rails new first_app
.
.
.
Using sass (3.2.3)
Using sass-rails (3.2.5)
Installing sqlite3 (1.3.6) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/alundgren/.rbenv/versions/1.9.3-p327/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/alundgren/.rbenv/versions/1.9.3-p327/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local
Gem files will remain installed in /home/alundgren/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.6 for inspection.
Results logged to /home/alundgren/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.6/ext/sqlite3/gem_make.out
An error occurred while installing sqlite3 (1.3.6), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.6'` succeeds before bundling.
I've tried installing the sqlite gem and rehashing rbenv, but same error. Does anyone have any ideas on how to fix this, what the exact gem name is, etc?

I had the same issue and I installed a the sqlite package on ubuntu:
apt-get install libsqlite3-dev

The problem is that you are missing the required header files to compile the mysql adapter. The error suggests "Try 'port install sqlite3 +universal' or 'yum install sqlite-devel' and check your shared library search path (the location where your sqlite3 shared library is located)". I would do that first, as this will ensure that you have the correct header files on your machine. Once you have them, you may have to specify the location of the files to the compiler, the "--with-sqlite3-include" directive will probably do the trick.

You do not seem to have sqlite installed on your box. The gem will not installed without the underlying being present.
Please do:
macosx: brew install sqlite
enterprise linux: sudo yum install libsqlite3-dev
ubuntu: sudo apt-get install libsqlite3-dev

Related

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. for SQlite3

I keep getting the below error in rails on windows when I try to make a new rails app? It fails when it gets to installing sqlite3.
current directory:
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.4.0/ext/sqlite3
C:/Ruby25-x64/bin/ruby.exe -r ./siteconf20190220-14164-174xy0j.rb extconf.rb
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for -ldl... no
checking for dlopen()... no
missing function dlopen
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby25-x64/bin/$(RUBY_BASE_NAME)
--with-sqlcipher
--without-sqlcipher
--with-sqlite3-config
--without-sqlite3-config
--with-pkg-config
--without-pkg-config
--with-sqlcipher
--without-sqlcipher
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--with-pthreadlib
--without-pthreadlib
--with-dllib
--without-dllib
To see why this extension failed to compile, please check the mkmf.log which can
be found here:
C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/sqlite3-1.4.0/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.4.0 for inspection.
Results logged to
C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/sqlite3-1.4.0/gem_make.out
An error occurred while installing sqlite3 (1.4.0), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.4.0' --source 'https://rubygems.org/'`
succeeds before bundling.
I have sqlite3 installed on my machine and I am using windows 10. I have attempted ot run the gem install sqlite3 command like it prompts me to but it still fails what am I doing wrong?
Try this
$ sudo apt-get install libsqlite3-dev
then,
$ bundle install
Probably, you use different rails version.
Solution is change version of sqlite to 1.3.6:
gem 'sqlite3', '~> 1.3.6'
After this change run command:
bundle update
Hi I got the same message when tried to install SQLite gem without MinGW gem installed already
C:\Sites>ridk exec pacman -S mingw-w64-x86_64-dlfcn
Install it and try again
If you DON'T have installed RailsInstaller only Ruby DevKit it should work. If not please try uninstalling it first, removing the remaining folders and installing rails by command gem install rails
Try uninstalling all the versions of the sqlite3 gem from the system and reinstalling only version 1.4.0

Ruby Sqlite3 installation sqlite3_libversion_number() macOS Sierra

I'm trying to install the Metasploit framework (unimportant) and bundler is attempting to install sqlite3, which is where it fails consistently. Sqlite3 is installed (executing sqlite3 at the command line brings me into the environment) and is linked using brew link sqlite3 (and adding the --force, for some reason) but bundler install fails each time with this error:
sudo gem install sqlite3
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--with-sqlite3-config
--without-sqlite3-config
--with-pkg-config
--without-pkg-config
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/
--with-pthreadlib
--without-pthreadlib
--with-sqlite3lib
--without-sqlite3lib
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/sqlite3-1.3.12 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/sqlite3-1.3.12/ext/sqlite3/gem_make.out
I finally managed to solve this by specifying the built-in Mac OS X sqlite library directory on macOS Sierra 10.12.5 (16F73):
$ whereis sqlite3
/usr/bin/sqlite3
# if binary is in /usr/bin then library is typically in /usr/lib
$ gem install sqlite3 -- --with-sqlite3-lib=/usr/lib
Building native extensions with: '--with-sqlite3-lib=/usr/lib'
This could take a while...
Successfully installed sqlite3-1.3.13
Parsing documentation for sqlite3-1.3.13
Done installing documentation for sqlite3 after 0 seconds
1 gem installed
I tried specifying the Homebrew library directory but for some reason it didn't work:
$ brew ls --verbose sqlite3
/usr/local/Cellar/sqlite/3.19.3/.brew/sqlite.rb
/usr/local/Cellar/sqlite/3.19.3/bin/sqlite3
/usr/local/Cellar/sqlite/3.19.3/include/msvc.h
/usr/local/Cellar/sqlite/3.19.3/include/sqlite3.h
/usr/local/Cellar/sqlite/3.19.3/include/sqlite3ext.h
/usr/local/Cellar/sqlite/3.19.3/INSTALL_RECEIPT.json
/usr/local/Cellar/sqlite/3.19.3/lib/libsqlite3.0.dylib
/usr/local/Cellar/sqlite/3.19.3/lib/libsqlite3.a
/usr/local/Cellar/sqlite/3.19.3/lib/libsqlite3.dylib
/usr/local/Cellar/sqlite/3.19.3/lib/pkgconfig/sqlite3.pc
/usr/local/Cellar/sqlite/3.19.3/README.txt
/usr/local/Cellar/sqlite/3.19.3/share/man/man1/sqlite3.1
$ gem install sqlite3 -- --with-sqlite3-lib=/usr/local/Cellar/sqlite/3.19.3/lib
This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
...
If someone knows how to specify the Homebrew library directory, please let me know because that would provide a little more control over installation (supposedly MacPorts works but I no longer use it).
For anyone curious, here's the full command to install Ruby's Sequel:
gem install sequel mysql sqlite3 -- --with-sqlite3-lib=/usr/lib
And how to convert a Laravel Homestead MySQL database listening on host port 3306 to SQLite from my comment on the question:
sequel mysql://homestead:secret#192.168.10.10:3306/my_database -C sqlite://my_database.sqlite
This worked for me on Mac High Sierra OS 10.13
gem install sqlite3 -- --with-sqlite3-lib=/usr/lib
Digging into the mkmf.log who you will find by replacing the last part of the file pointer to the log of the installation attempt. In my case:
Results logged to ~/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-19/2.2.0-static/sqlite3-1.3.13/gem_make.out
so I find the mkmf.log here:
~/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-19/2.2.0-static/sqlite3-1.3.13/mkmf.log
I found a more explicit description of the errors:
conftest.c:13:15: error: implicit declaration of function 'pthread_create' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
conftest.c:13:15: error: implicit declaration of function 'sqlite3_libversion_number' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
So adding the --with-cflags="-Wno-error=implicit-function-declaration" made the trick!
gem install sqlite3 -- --with-cflags="-Wno-error=implicit-function-declaration"

Error installing sqlite3, Failed to build gem native extension

I've referred to the following solution on stackoverflow, yet I'm still experiencing the same issue:
(Error installing mysql2: Failed to build gem native extension),
The below command referenced in the link above did not remediate the issue:
brew install mysql
Evidently, the issue persists, returning the following output:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/
--with-sqlite3lib
--without-sqlite3lib
Gem files will remain installed in /var/folders/fb/tvgwnxc10lq6kd5xxwcg_0nw0000gn/T/bundler20150210-28601-nw7oyi/sqlite3-1.3.10/gems/sqlite3-1.3.10 for inspection.
Results logged to /var/folders/fb/tvgwnxc10lq6kd5xxwcg_0nw0000gn/T/bundler20150210-28601-nw7oyi/sqlite3-1.3.10/gems/sqlite3-1.3.10/ext/sqlite3/gem_make.out
An error occurred while installing sqlite3 (1.3.10), and Bundler cannot
continue.
Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.
➜ code
I would sincerely appreciate assistance. Thank you!
The following commands remediated my issue:
brew unlink sqlite
brew install sqlite3 --universal
sudo gem install sqlite3 -- --with-sqlite3-dir=/usr/local/Cellar/sqlite/3.8.8.1
My long-time friend working in InfoSec assisted me. According to him, my SQLite3 updates were directing to the wrong bin. I hope this helps anyone experiencing the same frustrating issue. Thank you!

Ruby On Rails SQLite errors when creating new project

I've been working with ruby recently, I really like the language and have been picking it up really quick I decided it was time to try and work with the Rails framework. When I try to create a new project my typing
rails new first-site
I get the following errors I've spent hours Googling it and haven't found any similar result
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/
--enable-local
--disable-local
Gem files will remain installed in /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.8 for inspection.
Results logged to /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.8/ext/sqlite3 /gem_make.out
An error occurred while installing sqlite3 (1.3.8), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundling.
I then run the gem install sqlite3 -v '1.3.8' and get similar errors.
I have no idea what I'm doing wrong.
Looks like you need to install sqlite
That is where the
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel'
If you have another db setup like postgres you can run it with the database switch
rails new myapp --database=postgresql
I found out I was missing developer dependencies when trying to use the MySQL gem. All is fixed now :)

Unable to install SQLite3 gem on Ruby 1.9.3, no issues with Ruby 2.0.0. What's the difference?

Like the title says...
I've been teaching myself RoR the past few weeks and I'm confused about something.
I went through the tutorial here no problem. No issues installing gems or anything. Now I've decided to learn more from this book. So I installed 1.9.3 with rvm and found myself unable to install SQLite3.
What's the issue? It installed fine on the newer version and once I switched back to Ruby 2.0.0 I had no issues installing that version of SQLite. If it helps, I'm on Mac OS 10.6.8.
Here's the Terminal output from my failures:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/ME/.rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/ME/.rvm/rubies/ruby-1.9.3-p429/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local
--with-sqlite3lib
--without-sqlite3lib
Gem files will remain installed in /Users/ME/.rvm/gems/ruby-1.9.3 p429#rails3tutorial2ndEd/gems/sqlite3 1.3.5 for inspection.
Results logged to /Users/ME/.rvm/gems/ruby-1.9.3-p429#rails3tutorial2ndEd/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out
An error occurred while installing sqlite3 (1.3.5), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.
sudo apt-get install libsqlite3-dev
if you are using using debian bases distro.
sudo yum install sqlite-devel
if you are using redhat based distro.
do gem install sqlite3 after that. That should work
I never used a mac but use rvm to install rails. on the command line hit rvm requirements and install all the packages listed there.
I had a similar problem. If you don't mind resetting your gems, then follow the option below.
Go to the below link and download the installer for your operating system.
It installs everything perfectly and quickly all in 1 working package.
http://railsinstaller.org/

Resources