정말 실망스러운 문제가 있습니다. 레이크 가 멍청합니다.
문제가 발생하는 방법은 다음과 같습니다.
$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text
둘 다 잘 작동하지만 내가 이렇게하면
$ rake db:migrate
다음과 같은 오류가 발생합니다.
(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>'
인터넷에서 비슷한 / 같은 오류가 있는지 살펴 봤는데 사람들은 그 오류를 보았습니다. 아무도 문제를 해결하지 못하는 것 같습니다!
이 문제를 어떻게 해결합니까?
답변
답변
나는 이전 답변 직후에 약간의 연구를했습니다 (죄송합니다, 전에해야합니다).
모든 문제는 Rake gem 0.9.2로 해결되었습니다. 다음 단계를 수행했습니다.
- 설치했습니다
gem install rake -v=0.9.2
(0.9.1 보석이있었습니다) - 와 0.9.1을 제거
gem uninstall rake -v=0.9.1
- 로 업데이트
bundle update
-
그런 다음
db:migrate
경고를 표시WARNING: Global access to Rake DSL methods is deprecated. Please....
Rake 파일에 다음을 추가하여 해결되었습니다.
module ::YourApplicationName class Application include Rake::DSL end end
-
module ::RakeFileUtils extend Rake::FileUtilsExtend
@databyte에 의해 제안 된 옵션을 생략했습니다 .
그것은 레이크 보석 0.9.2가 잘 작동한다는 것을 의미합니다!
답변
Railstutorial 2 장 (demo_app)을 살펴보고이 문제에 부딪쳤다. 여기에 나열된 다른 모든 답변을 시도했지만이 작업을 수행 할 때까지 작동하지 못했습니다.
위의 Rakefile에 ‘rake’가 필요합니다.
require 'rake/dsl_definition'
VIA는 어떻게 Heroku가에 초기화되지 않은 일정 레이크 :: DSL의 문제를 해결하기 위해?
또한 모든 파일을 다시 커밋하고 Github와 Heroku로 푸시했습니다.
답변
내가해야 할 일은 사용이었습니다.
gem install rake
0.9.2 버전이 이미 설치되어 있어야합니다.
답변
레이크 보석을 다시 설치하고 그것을 해야 잘 작동 :
gem uninstall rake -v=0.9.2
gem install rake -v=0.9.2
그렇지 않은 경우 Gemfile에 ‘0.8.7’버전을 지정하십시오.
답변
번 들러를 사용하지 않는 경우 :
sudo gem install rake -v 0.8.7
sudo gem uninstall rake
그런 다음 0.9.0을 제거하도록 선택하십시오.
답변
나와 같이 rake 0.8.7에 갇혀 있고 Rails 3.2.x를 사용하는 경우 railties는 Rake :: DSL에 대한 요구 사항을 추가합니다.
이 문제를 해결하려면 Rakefile 상단에 다음을 추가해야합니다.
module Rake
module DSL
end
end