Estou tendo um problema realmente frustrante: o Rake está sendo burro.
Veja como o problema ocorre:
$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
Ambos funcionam bem, mas quando eu faço isso,
$ rake db:migrate
Estou tendo o erro a seguir.
(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'
Procurei na Internet por erros semelhantes / mesmos, e as pessoas os tiveram. Apenas ninguém parece resolver o problema!
Como corrijo esse problema?
ruby-on-rails
rake
HRÓÐÓLFR
fonte
fonte
bundle update rake
primeiro. Então eu verifiquei combundle show rake
. Deve dizer 0.8.7. Entãorake db:migrate
.gem "rake", "!= 0.9.0"
. Isso evita a versão 0.9.0 quebrada, mas será atualizada para uma versão mais recente assim que uma versão mais recente for publicada (removê-la posteriormente não prejudicará, mas mantê-lo também não deve prejudicar).heroku rake db:migrate
e isso parece corrigi-lo. lembre-se de adicionar e confirmar essas alterações no git antes de continuar;)sudo gem install rake
para garantir que arake
versão que eu estava chamando na linha de comando não fosse 0.8.7.Fiz algumas pesquisas logo após a resposta anterior (desculpe, devo fazer antes).
Todos os problemas foram resolvidos com o Rake gem 0.9.2. Segui estas etapas:
gem install rake -v=0.9.2
(eu tinha a jóia 0.9.1)gem uninstall rake -v=0.9.1
bundle update
então o
db:migrate
mostrou um aviso,WARNING: Global access to Rake DSL methods is deprecated. Please....
Foi resolvido adicionando o seguinte ao arquivo Rake.
Omiti a
module ::RakeFileUtils extend Rake::FileUtilsExtend
opção sugerida por @databyte.Isso significa que o Rake gem 0.9.2 funciona bem!
fonte
RakeFile
deve ser antesrequire 'rake'
- me pegou fora :)gem uninstall rake -v=0.9.2
2)gem install rake -v=0.9.2
Passando pelo capítulo 2 do Railstutorial (demo_app), encontrei esse problema. Tentei todas as outras respostas listadas aqui, mas não consegui fazê-lo funcionar até que fiz isso:
Coloque isso em seu Rakefile acima e exija 'rake':
via Como corrigir o problema constante não inicializado de Rake :: DSL no Heroku?
Também recomendei e enviei todos os arquivos para o Github e Heroku.
fonte
Tudo que eu precisava fazer era usar:
Eu já tinha a versão 0.9.2, só precisava instalar.
fonte
Reinstale o gem rake e ele deve funcionar bem:
Caso contrário, especifique a versão '0.8.7' no seu Gemfile.
fonte
Se não estiver usando o Bundler:
Em seguida, escolha desinstalar o 0.9.0.
fonte
Se como eu, você está preso no rake 0.8.7 e está usando o Rails 3.2.x, o railties adiciona um requisito para o Rake :: DSL
Para resolver isso, no topo do seu Rakefile você deve adicionar:
fonte
Resolvi o mesmo problema com as seguintes etapas:
No Gemfile:
Em seguida, execute isso no console:
Em seguida, adicionou as seguintes linhas ao Rakefile:
fonte
O Rails 3.1.rc1 foi atualizado. Para seus próprios Rakefiles, você pode adicioná-lo antes da chamada para load_tasks.
https://gist.github.com/4cd2bbe68f98f2f0249f
UPDATE: Observe também que já foi respondido aqui também: Método indefinido 'task' usando Rake 0.9.0
fonte
Eu tive o mesmo problema e tive que usar a rake 0.8.7 gem em vez de 0.9.0.
fonte
Eu sou um usuário do Windows XP e tive o mesmo problema.
Digitei gem "rake", "0.8.7" no gemfile e digitei o seguinte na janela de comando.
Isso resolveu o meu problema.
fonte
bundle install --path=vendor/bundle
bundle exec rake db:migrate
Para iniciar o tipo de servidor
bundle exec rails s
. Use o bundle exec e você terá certeza de usar as gemas corretas (versão necessária) para o seu projeto. Também eu recomendo que você adicionevendor/bundle
a.gitignore
se utilizargit
e fazer alias parabundle exec
. Se você usar,zsh
pode seguir esta abordagemfonte
O mesmo que Branstar acima - obrigado Branstar!
Eu segui as instruções em Executando o Rails 3 no Windows .
Tudo funcionou até a parte "rake db: migrate", que me deu a mesma saída que a postagem original.
Eu corri:
Eu corri novamente:
Pude iniciar o servidor Ruby on Rails e colocar tudo no lugar.
Mais uma vez obrigado Branstar :-)
fonte
Eu sinto por você (mikhailvs), é realmente frustrante. Estou enlouquecendo há quase um dia inteiro. Até desinstalei o Ruby e todos os seus arquivos dependentes e desliguei o meu PC, mas ainda tenho o mesmo problema.
O que recebi da mensagem de erro é o problema com o Rake 0.9.2. Parece que não foi totalmente instalado. Então eu tive que reinstalar
gem install rake -v=0.9.2
Eu não tinha certeza se tenho o rake –v0.9.1 instalado. Então, para ter certeza de que estou seguro, tentei remover essa versão antiga
gem uninstall rake -v=0.9.1
. Mas é me mostrado a mensagem de erroOK, verifiquei todos os diretórios Rake no meu PC e descobri que só tinha o Rake 0.9.2. Então, para verificar se tudo correu bem, eu migrei com
rake db:migrate
. E funcionou :)Eu acho que não tinha o Rake 0.9.1 porque eu instalei o Ruby ( rubyinstaller-1.9.2-p180 - no meu sistema Windows 7) e todas as jóias também. Enquanto isso, o Rake 0.9.2 não estava totalmente instalado.
fonte
A desinstalação com o "gem uninstall rake" funcionou para mim, eu tinha 2 versões instaladas, então fiz uma reinstalação limpa.
"rake db: create" , para garantir que o banco de dados exista e, em seguida, "rake db: migrate" para selar o acordo.
fonte
Eu tive o mesmo problema usando o Rake 0.9.2.2. Resolvi esse problema usando o bundle exec.
fonte
Para a edição do Rails 2.3,
lib/tasks/rspec.rake
como neste commit, funcionou para mim:https://github.com/dchelimsky/rspec-rails/pull/11/files
fonte
Instale o rake 0.8.7 e desinstale o 0.9.2.2
Agora usa
Eu acho que isso vai te ajudar ;)
fonte
Corre
funciona para mim.
fonte