problemas com rspec

59 views
Skip to first unread message

André Lima

unread,
May 25, 2011, 10:17:52 AM5/25/11
to rub...@googlegroups.com
Galera,
estou tendo problemas ao fazer o teste em uma gem. Seguinte, a estrutura do meu projeto está mais ou menos assim:
lib
spec
sendo que na lib está a gem e o modelo dessa gem. E no spec, o spec_helper e o pgeatv100005_servico_spec.rb, que é o arquivo que testa essa gem.
No entanto, quando rodo o rspec, eu recebo isso aqui como retorno:

No examples found.


Finished in 0.00002 seconds
0 examples, 0 failures

e quando rodo o ruby spec/spec_helper.rb, recebo o seguinte erro:
/usr/lib/ruby/vendor_ruby/1.8/
rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- ../lib/pgeatv100005_servico (LoadError)
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from spec/spec_helper.rb:3

ou seja, um erro nessa linha no spec_helper:
require '../lib/pgeatv100005_servico'

segue o link dos arquivos:

https://gist.github.com/991048

Lucas Catón

unread,
May 25, 2011, 1:13:43 PM5/25/11
to rub...@googlegroups.com
Tenta trocar seu require por isso:

require 'pgeatv100005_servico'


--
Lucas Catón



2011/5/25 André Lima <azdr3...@gmail.com>
--
Você recebeu esta mensagem porque está inscrito no Grupo "ruby-sp" em
Grupos do Google.
Para postar neste grupo, envie um e-mail para rub...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
ruby-sp+u...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com.br/group/ruby-sp?hl=pt-BR

Luciano Sousa

unread,
May 25, 2011, 1:28:56 PM5/25/11
to rub...@googlegroups.com
ele não está achando esse seu arquivo... verifica se esse '../' está levando para o caminho correto... talvez seja necessário descer/subir mais algum nível...
se você estiver utilizando o rails, esse require não é nem necessário.

abs.

Best Regards,
Luciano Sousa
http://www.lucianosousa.net
*Ruby on Rails Developer
*Contact: +55 21 7639-5049


2011/5/25 André Lima <azdr3...@gmail.com>
--

Vinícius Baggio Fuentes

unread,
May 25, 2011, 8:08:18 PM5/25/11
to rub...@googlegroups.com
Antes de mais nada, existem alguns probleminhas aí:

* No require do pgalgumacoisa.rb não é necessário usar o .rb no arquivo, é uma boa prática (se quiser mais detalhes sobre isso posso falar)
* No spec_helper.rb, basta você fazer require da lib, mas sem usar o path por completo. Por se tratar de uma gem, é o padrão para se estruturar e o próprio gemspec/rakefile tem que falar para incluir a pasta lib ali, então basta colocar no SpecTask.

* Se você usar "bundle new", você pode ter um template um pouco melhor de gem, vale a pena experimentar.

Uma coisa importante que eu queria saber de você é como estes arquivos estão dispostos no filesystem, assim eu posso te ajudar melhor!


- vinicius


2011/5/25 Luciano Sousa <lis...@lucianosousa.net>

André Lima

unread,
May 27, 2011, 8:17:02 AM5/27/11
to rub...@googlegroups.com
Vinicius,
dentro de lib, estão os arquivos pgeatv100005_servico.rb e a pasta models, contendo o modelo, que está definido dessa forma:

o erro que eu descrevi anteriormente foi resolvido, fiz umas mudanças no rakefile que estava configurados com as confs do rspec 1.x, eu tô usando o rspec 2.x e ajustando o caminho do require que chama a gem na pasta lib, então ficou assim: require 'pgeatv100005_servico_spec'. mas agora outro erro aparece. E esse erro é um pouco mais complexo: na minha gem eu tenho definido o seguinte:
require 'models/justificativa.rb'

esse model não se conecta diretamente com o active record, chama mais outras 2 gems para que uma ultima se conecte ao active record. No entanto quando rodo assim, ele não reconhece o activerecord:


(in /home/cti/andrelima/testa_gems)
/home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/bin/ruby -S rspec -fs --color spec/pgeatv100005_servico_spec.rb
/home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/licitacao_justificativa_base_conexao-0.0.1/lib/licitacao_justificativa_base_conexao.rb:4: uninitialized constant ActiveRecord (NameError)
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:58:in `gem_original_require'
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:58:in `require'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/licitacao_justificativa-0.0.1/lib/licitacao_justificativa.rb:1
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:58:in `gem_original_require'
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:58:in `require'
    from /home/cti/andrelima/testa_gems/lib/models/justificativa.rb:1
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /home/cti/andrelima/testa_gems/spec/spec_helper.rb:3
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /home/cti/andrelima/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /home/cti/andrelima/testa_gems/spec/pgeatv100005_servico_spec.rb:1
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/configuration.rb:419:in `load'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/configuration.rb:419:in `load_spec_files'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/configuration.rb:419:in `map'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/configuration.rb:419:in `load_spec_files'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/command_line.rb:18:in `run'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/runner.rb:80:in `run_in_process'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/runner.rb:69:in `run'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/rspec-core-2.6.3/lib/rspec/core/runner.rb:11:in `autorun'
    from /home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/bin/rspec:19
rake aborted!

ruby -S rspec -fs --color spec/pgeatv100005_servico_spec.rb failed

segue como estão definidos os códigos:
https://gist.github.com/995129

já me deram a sugestão de usar um gemfile, mas eu não sei se isso resolve o problema. o activerecord está instalado(activerecord (2.3.8)

Cássio Marques

unread,
May 27, 2011, 8:59:00 AM5/27/11
to rub...@googlegroups.com
Faça o require do active_record no topo do seu spec_helper.rb. Mesmo que após a inicialização outra gem faça o mesmo require, caso a gem já tenha sido carregada esse segundo require será ignorado e você não deverá ter problemas.

-- 
Cássio Marques

Luciano Sousa

unread,
May 27, 2011, 9:23:25 AM5/27/11
to rub...@googlegroups.com
qual a versão do teu rspec?


Best Regards,
Luciano Sousa
http://www.lucianosousa.net
*Ruby on Rails Developer
*Contact: +55 21 7639-5049


2011/5/27 André Lima <azdr3...@gmail.com>

André Lima

unread,
May 27, 2011, 10:03:53 AM5/27/11
to rub...@googlegroups.com
Cássio,
fiz do jeito que você disse, agora o erro é outro e um pouco mais complicado...seguinte, na minha gem de base conexão eu chamo um [RAILS_ENV] nas configurações. então está configurado mais ou menos da seguinte forma:

module PGE
  module Base
    module Licitacao
      class JustificativaBaseConexao < ::ActiveRecord::Base
        if RUBY_PLATFORM =~ /java/
          require 'rubygems'
          gem 'activerecord-jdbcpostgresql-adapter'
          require 'jdbc_adapter'
        end

        self.abstract_class = true
        self.configurations[RAILS_ENV]['adapter']  = "postgresql"
        self.configurations[RAILS_ENV]['host']     = "dhdatabase"
        self.configurations[RAILS_ENV]['port']     = 5432
        self.configurations[RAILS_ENV]['username'] = "pgeatv100005"
        self.configurations[RAILS_ENV]['password'] = "pgeatv100005_licitacao"
        self.configurations[RAILS_ENV]['database'] = "db_portal_digital"
        self.configurations[RAILS_ENV]['schema_search_path'] = "adm_pgeatv100005"
       
        if RAILS_ENV == 'test' then self.configurations[RAILS_ENV]['database'] = 'db_teste' end

        establish_connection
      end
    end
 end
end

2011/5/27 Cássio Marques <cass...@gmail.com>

André Lima

unread,
May 27, 2011, 10:05:24 AM5/27/11
to rub...@googlegroups.com
então o erro que está sendo chamado é esse:
/home/cti/andrelima/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in `const_missing': uninitialized constant Pge::Base::Licitacao::JustificativaBaseConexao::RAILS_ENV (NameError)

sendo que estou fazendo isso em uma estrutura montada pelo gemhub, não é uma app rails. Existe algum modo de driblar isso?

2011/5/27 André Lima <azdr3...@gmail.com>

Cássio Marques

unread,
May 27, 2011, 10:56:47 AM5/27/11
to rub...@googlegroups.com
e qual é o erro? :)

-- 
Cássio Marques

Cássio Marques

unread,
May 27, 2011, 11:01:52 AM5/27/11
to rub...@googlegroups.com
Me parece que você está pegando código pronto de algum lugar e copiando/colando... se sua app não é Rails, então o RAILS_ENV realmente não vai existir. Se o que você quer é definir diferentes environments para execução (test, development, production, etc) tal qual acontece com o Rails, acho que a solução mais simples é trocar o seu RAILS_ENV ai por algo como

SUA_APP_ENV = ENV["SUA_APP_ENV"]

e rodar seu programa com algo como 
$ SUA_APP_ENV=development ruby sua_app.rb

no seu spec_helper.rb pode-se colocar algo assim no topo também, se for o caso

SUA_APP_ENV = ENV["SUA_APP_ENV"] || "test"

-- 
Cássio Marques

Reply all
Reply to author
Forward
0 new messages