Começando com Rails 3 – Instalando com Mysql

Estamos começando a atualizar nossas aplicações para Rails 3 e começamos enfrentando alguns problemas e erros ao instala-lo, coisas simples mas que pode acabar atrapalhando a vida dos mais novos em Rails, decidimos instalar um ambiente Rails 3 do zero (usando o Mint Linux – bastante compativel com Ubuntu e Debian em geral) para podermos identificar estes problemas e tentar ajudar a resolve-los, vamos começar instalando o Ruby (1.8.7, versão estavel até o momento).

sudo apt-get install ruby1.8 ruby1.8-dev

Também instalamos o RubyGems com o comando:

sudo apt-get install rubygems

No entanto identificamos que até o presente instante nos repositórios do Mint Linux a versão corrente do RubyGems é a 1.3.5 e o Rails 3 necessita da >= 1.3.6, logo baixamos o fonte da versão 1.3.7 do site oficial (aa) e instalamos na mão rodando o setup.rb.

Na sequencia instalamos o Mysql 5.1 com o comando:

sudo apt-get install mysql-server-5.1

Se quiser pode instalar o client poara poder acessar o banco pelo console com:

sudo apt-get install mysql-client-5.1

Bom, agora o principal, instalar o rails com o RubyGems, ele ja vai instalar tudo o que precisar, fazemos isso com o comando:

sudo gem install rails

Se tudo correu bem já temos o rails instalado e você pode verifica a versão do Ruby e do Rails com os respectivos comandos:

ruby -v
rails -v

Até ai tudo certo, a partir daqui que começaram nossos problemas, após criarmos uma app Rails 3 usando Mysql e configurando o banco ao rodar o comando para criarmos os bancos de dados (rake db:create:all) recebemos a seguinte mensagem:

Could not find gem ‘mysql2 (>= 0, runtime)’ in any of the gem sources.
Try running `bundle install`.

A gem mysql2 citada acima é a nova maneira de interagir com o Mysql adotado pelo Rails 3, tentamos instala-la e recebemos a seguinte mensagem:

sudo gem install mysql2
Building native extensions. This could take a while…
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for rb_thread_blocking_region()… no
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lm… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lz… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lsocket… no
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lnsl… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lmygcc… no
checking for mysql_query() in -lmysqlclient… no
*** 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/bin/ruby1.8
–with-mysql-config
–without-mysql-config
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mlib
–without-mlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-zlib
–without-zlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-socketlib
–without-socketlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-nsllib
–without-nsllib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mygcclib
–without-mygcclib
–with-mysqlclientlib
–without-mysqlclientlib

Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql2-0.2.3 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/mysql2-0.2.3/ext/mysql2/gem_make.out

Solução

Percebemos que faltavam algumas libs no sistema, o problema foi facilmente corrigico com:

sudo apt-get install libmysql-ruby libmysqlclient-dev

Agora tente instalar novamente a gem mysql2 com:

sudo gem install mysql2

Pronto problema resolvido e tudo funcionando.

Update 1: não se esqueça de adicionar suporte a openssl com o comando:

sudo apt-get install libopenssl-ruby

4 thoughts on “Começando com Rails 3 – Instalando com Mysql

    • Amigos, vou dar uma verificada e instalar esta versão do Ubuntu e começar uma instalação do zero, vou postando aqui os resultados, qualquer progresso que tenham por favor postem aqui para os demais. Vamos resolver estes problemas

  1. Tive o problema parecido com esse, tentei sua solucao mas nao deu em nada. Estou no ubuntu 10.04 LTS com o rails 3, ruby 1.8.7 e a ultima versao do mysql. Apos criar um projeto em mysql e tentar rodar com o rails server, acontece o seguinte:

    Could not find gem ‘mysql2 (>= 0, runtime)’ in any of the gem sources.
    Try running `bundle install`.

    Dai eu tento o bundle install:

    garoto@garoto-laptop:~/blog$ bundle install
    Fetching source index for http://rubygems.org/
    Using rake (0.8.7)
    Using abstract (1.0.0)
    Using activesupport (3.0.0)
    Using builder (2.1.2)
    Using i18n (0.4.1)
    Using activemodel (3.0.0)
    Using erubis (2.6.6)
    Using rack (1.2.1)
    Using rack-mount (0.6.13)
    Using rack-test (0.5.6)
    Using tzinfo (0.3.23)
    Using actionpack (3.0.0)
    Using mime-types (1.16)
    Using polyglot (0.3.1)
    Using treetop (1.4.8)
    Using mail (2.2.7)
    Using actionmailer (3.0.0)
    Using arel (1.0.1)
    Using activerecord (3.0.0)
    Using activeresource (3.0.0)
    Using bundler (1.0.2)
    Installing mysql2 (0.2.4) with native extensions /usr/local/lib/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions’: ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

    /usr/bin/ruby1.8 extconf.rb
    extconf.rb:2:in `require’: no such file to load — mkmf (LoadError)
    from extconf.rb:2

    Gem files will remain installed in /home/garoto/.bundler/tmp/27782/gems/mysql2-0.2.4 for inspection.
    Results logged to /home/garoto/.bundler/tmp/27782/gems/mysql2-0.2.4/ext/mysql2/gem_make.out
    from /usr/local/lib/site_ruby/1.8/rubygems/installer.rb:446:in `each’
    from /usr/local/lib/site_ruby/1.8/rubygems/installer.rb:446:in `build_extensions’
    from /usr/local/lib/site_ruby/1.8/rubygems/installer.rb:198:in `install’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/source.rb:100:in `install’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/installer.rb:55:in `run’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/spec_set.rb:12:in `each’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/spec_set.rb:12:in `each’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/installer.rb:44:in `run’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/installer.rb:8:in `install’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/cli.rb:217:in `install’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/vendor/thor/task.rb:22:in `send’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/vendor/thor/task.rb:22:in `run’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/vendor/thor.rb:246:in `dispatch’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/lib/bundler/vendor/thor/base.rb:389:in `start’
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.2/bin/bundle:13
    from /usr/bin/bundle:19:in `load’
    from /usr/bin/bundle:19

    por favor, voce pode me ajudar?

    • Amigos, vou dar uma verificada e instalar esta versão do Ubuntu e começar uma instalação do zero, vou postando aqui os resultados, qualquer progresso que tenham por favor postem aqui para os demais.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">