IT story

Rake DSL 메소드에 대한 전역 액세스는 더 이상 사용되지 않습니다.

hot-time 2020. 9. 13. 11:50
반응형

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_tasksRakefile에서 이전 입니다.


설치 프로그램을 사용하여 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

반응형