Rake DSL 메소드에 대한 전역 액세스는 더 이상 사용되지 않습니다.
Ruby on Rails 3 자습서 책을 읽고 있으며 명령 줄에 다음을 입력했습니다.
rake db:migrate
다음 경고를 생성했습니다.
WARNING: Global access to Rake DSL methods is deprecated. Please Include
... Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method DemoApp::Application#task called at /Users/imac/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'
어떻게해야하는지, 어떻게 작업해야하는지 잘 모르겠습니다. Rake에 대한 다른 명령은 없습니다.
이 문제를 어떻게 해결할 수 있습니까?
Stack Overflow 질문 Ruby on Rails 및 Rake problems : uninitialized constant Rake :: DSL 에서 이것을 발견했습니다 . @DHH 트윗을 의미합니다.
Gemfile에 다음을 넣으십시오.
gem "rake", "0.8.7"
다음과 같은 것을 볼 수 있습니다.
rake aborted!
You have already activated Rake 0.9.1 ...
나는 여전히 내 디렉토리에 Rake 0.9.1의 사본을 가지고있어서 그것을 삭제했습니다.
다음 명령을 실행하여 Rake 0.9.1을 "삭제"할 수 있습니다.
gem uninstall rake -v=0.9.1
여러 버전의 gem이 설치되어있는 경우 버전을 선택하라는 메시지가 표시됩니다.
0.9.1을 정리 한 후
bundle update rake
마침내 내 데이터베이스 파일을 만들 수있었습니다. 나는을 사용 rake db:create
하고 있었지만에서도 작동 rake db:migrate
합니다.
도움이되기를 바랍니다.
include Rake::DSL
응용 프로그램 load_tasks가 호출되기 전에 Rakefile에 추가 하는 것도 저에게 효과적이었습니다.
따라서 위의 사용자의 경우 DemoApp::Application.load_tasks
Rakefile에서 이전 입니다.
설치 프로그램을 사용하여 Windows에서 동일한 문제가 발생했습니다. Ruby 1.9.2 및 Rails 3.0.9. 내가 한 일은 다음과 같습니다.
bundle update rake
bundle show rake
그 후 rake 0.9.2를 실행했습니다.
그런 다음 응용 프로그램 루트 폴더의 Rakefile을 다음과 같이 업데이트했습니다.
require File.expand_path('../config/application', __FILE__)
require 'rake'
# If you named your application something other than SampleApp, change that below
module ::SampleApp
class Application
include Rake::DSL
end
end
module ::RakeFileUtils
extend Rake::FileUtilsExt
end
SampleApp::Application.load_tasks
주석에서 언급했듯이 위의 두 줄에서 앱 이름이 올바른지 확인하세요.
3. +와 같은 Rails의 이후 버전에서 이것을 본다면 RVM http://beginrescueend.com/ 을 사용 하고 프로젝트에 대한 특정 ruby 및 gemset을 생성 하여 환경이 깨끗한 지 확인할 수도 있습니다 .
프로젝트별로 .rvmrc 파일을 사용하면 이전 시스템 gem이 프로젝트에 포함되지 않도록 할 수 있습니다. 전에 물린 적이 있습니다.
이것은 생성 된 Rakefiles 등으로 주위에 원숭이가 생기는 것을 방지합니다.
bundle exec rake db : migrate는 루비 버전 문제를 해결합니다.
참고 URL : https://stackoverflow.com/questions/6199301/global-access-to-rake-dsl-methods-is-deprecated
'IT story' 카테고리의 다른 글
UITableView 대신 UICollectionView를 사용하는 경우 (0) | 2020.09.13 |
---|---|
Android의 활동에 서비스 바인딩 (0) | 2020.09.13 |
“int * ptr = int ()”값 초기화가 어떻게 불법이 아닌가? (0) | 2020.09.13 |
'Maven 프로젝트 업데이트 중'중에 내부 오류가 발생했습니다. (0) | 2020.09.13 |
실행시 jar 파일에 매개 변수를 어떻게 전달합니까? (0) | 2020.09.13 |