tutorial rails example create and mysql ruby-on-rails ruby gem gemfile

example - ruby on rails mysql configuration



No puedo ejecutar "actualizaciĆ³n del paquete" debido a la gema "mysql2" (5)

Tengo esto en el Gemfile:

gem ''mysql2''

Pero cuando ejecuto la actualización del paquete , aparece este mensaje de error:

An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue. Make sure that `gem install mysql2 -v ''0.3.16''` succeeds before bundling.

Intenté mover esto a la sección de producción, así:

group :production do gem ''mysql2'' end

Pero después de ejecutar la actualización del paquete , el resultado es el mismo. Esta sección se procesa solo en el modo de producción o no?

¿Cómo deshacerse de este mensaje de error en localhost?

EDITAR: todo el mensaje de error:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/radek/.rvm/rubies/ruby-1.9.3-p385/bin/ruby extconf.rb checking for ruby/thread.h... *** 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/radek/.rvm/rubies/ruby-1.9.3-p385/bin/ruby /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:381:in `try_do'': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:931:in `block in have_header'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:254:in `open'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:254:in `open'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'' from /Users/radek/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/mkmf.rb:930:in `have_header'' from extconf.rb:9:in `<main>'' Gem files will remain installed in /Users/radek/.rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.16 for inspection. Results logged to /Users/radek/.rvm/gems/ruby-1.9.3-p385/gems/mysql2-0.3.16/ext/mysql2/gem_make.out An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue. Make sure that `gem install mysql2 -v ''0.3.16''` succeeds before bundling.

Gracias


Agregar esto en Gemfile: -

gem ''mysql2'', ''0.3.16''

Entonces:-

bundle install

Después de eso, prueba:

bundle update


Acabo de instalar mysql vía $ brew install mysql y solucionó el problema.


En Ubuntu, ejecuta

sudo apt-get install libmysqlclient-dev

O, si usa MariaDB, ejecute

sudo apt-get install libmariadbclient-dev


Terminé con un mensaje de error casi idéntico al intentar construir en una máquina sin instalar gcc-c++ ; mkmf no puede compilar un programa c simple porque el compilador no está allí.

Si está en CentOS, quiere sudo yum install gcc-c++ . En Ubuntu, es sudo apt-get install g++ . Es un poco decepcionante que las versiones antiguas de ruby-devel no tengan una dependencia en g++ .


Parece que no hay mysql2 gem instalada en su máquina. mysql2 gem está utilizando Mac OSX , debería instalar mysql2 gem como esta

gem install mysql2 -- --with-mysql-dir=/usr/local/opt/mysql/

Si el comando anterior no funcionó, prueba de esta manera

sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Y después de probar

bundle install

Esto debería arreglar el error.

Fuente