私は本当にイライラする問題を抱えています: Rake は愚かです。
問題の原因は次のとおりです。
$ 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 gemがありました)gem uninstall rake -v=0.9.1
で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
@databyteによって推測されるmodule ::RakeFileUtils extend Rake::FileUtilsExtend
オプションを省略しました。
これは、Rake gem 0.9.2が正常に機能することを意味します!
Railstutorial(demo_app)の第2章を通過すると、この問題に遭遇しました。ここにリストされている他のすべての答えを試してみましたが、これを行うまでは機能しませんでした:
これを上記のRakefileに入れて 'rake'を要求します:
require 'rake/dsl_definition'
初期化されていない定数のRake :: DSLの問題をHerokuで修正するには?
また、すべてのファイルをGithubとHerokuに再コミットしてプッシュしました。
私がする必要があるのは、使用することだけでした:
gem install rake
バージョン0.9.2が既にあり、インストールするだけで済みました。
Rake gemを再インストールすると、should正常に動作します。
gem uninstall rake -v=0.9.2
gem install rake -v=0.9.2
そうでない場合は、Gemfileでバージョン「0.8.7」を指定します。
Bundlerを使用しない場合:
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
次の手順で同じ問題を解決しました。
Gemfileで:
gem 'rake', '0.9.2'
次に、コンソールでこれを実行しました:
Sudo bundle update rake
次に、Rakefileに次の行を追加しました。
require 'rake/dsl_definition'
include Rake::DSL
Rails 3.1.rc1が更新されました。独自のRakefileの場合、load_tasksを呼び出す前にこれを追加できます。
module ::YourApplicationName
class Application
include Rake::DSL
end
end
module ::RakeFileUtils
extend Rake::FileUtilsExt
end
https://Gist.github.com/4cd2bbe68f98f2f0249f
更新:また、ここでも既に回答されていることに注意してください: Rake 0.9.0を使用した未定義のメソッド 'task'
私はWindows XPユーザーであり、同じ問題がありました。
Gem "rake"、 "0.8.7"をgemfileに入力し、コマンドウィンドウから次のように入力しました。
bundle update rake
これで問題が解決しました。
同じ問題があり、0.9.0ではなくrake 0.8.7 gemを使用する必要がありました。
bundle install --path=vendor/bundle
bundle exec rake db:migrate
サーバーを起動するには、bundle exec Rails s
と入力します。 bundle execを使用すると、プロジェクトに適切なgem(必要なバージョン)を確実に使用できます。また、git
を使用してvendor/bundle
のエイリアスを作成する場合は、.gitignore
をbundle exec
に追加することをお勧めします。 zsh
を使用する場合、 このアプローチ に従うことができます
上記のブランスターと同じ-ブランスターに感謝!
WindowsでRails 3を実行の指示に従いました。
すべてが「rake db:migrate」の部分まで機能し、元の投稿と同じ出力が得られました。
私が走った:
gem install rake
私は再び走った:
rake db:migrate
その後、RubyサーバーでRailsを起動し、すべてを適切に配置することができました。
再びブランスターに感謝します:-)
Rake 0.9.2.2を使用しても同じ問題が発生しました。 bundle execを使用してこの問題を解決しました。
私はあなた(ミハイルフ)を感じています、それは本当にイライラしています。私はほぼ丸一日、夢中になりました。 Rubyとそのすべての依存ファイルをアンインストールし、PCをシャットダウンしましたが、それでも同じ問題が発生しました。
エラーメッセージから得たのは、Rake 0.9.2の問題です。完全にインストールされていないようです。そこで、gem install rake -v=0.9.2
を再インストールする必要がありました
Rake –v0.9.1がインストールされているかどうかはわかりませんでした。そこで、安全を確保するために、gem uninstall rake -v=0.9.1
を使用してその古いバージョンを削除しようとしました。しかし、私にエラーメッセージが表示されます
ERROR: While executing gem ... (Gem::InstallError)
cannot uninstall, check `gem list -d rake`
それでは、PC上のすべてのRakeディレクトリをチェックしたところ、Rake 0.9.2しかなかったことがわかりました。次に、すべてがうまくいったかどうかを確認するために、rake db:migrate
で移行しました。そして、それは働いた:)
Ruby( rubyinstaller-1.9.2-p18 -Windows 7システム)とすべてのgemもクリーンインストールしたため、Rake 0.9.1がなかったと思います。それまでの間、Rake 0.9.2は完全にはインストールされていませんでした。
"gem uninstall rake"でアンインストールすると、2つのバージョンがインストールされたので、きれいに再インストールしました。
"rake db:create"、データベースが存在することを確認してから"rake db:migrate"で取引を封印します。
Rake 0.8.7をインストールし、0.9.2.2をアンインストールします
$ gem install rake -v 0.8.7
$ gem uninstall rake -v 0.9.2.2
使用する
$ bundle exec rake db:migrate
私はこれがあなたを助けると思う;)
走る
bundle exec rake db:migrate
わたしにはできる。
Rails 2.3の場合、このコミットのようにlib/tasks/rspec.rake
を編集するとうまくいきました: