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-mysqlclientlibGem 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
Fiz tudo isso no Ubuntu… mas ainda continua dando o ERRO:
Could not find gem ‘mysql2 (>= 0, runtime)’ in any of the gem sources.
Try running `bundle install`.
O que pode ser amigo?
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
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.