2

テストをカスタマイズするためのレーキタスクを作成したいと思います。たとえば、単体テストを実行するために、次のコードを使用してファイルを作成し、lib / tasks/test.rakeとして保存しました。

task :do_unit_tests do
  cd #{Rails.root} 
  rake test:units
end

実行rake do_unit_testsするとエラーがスローされます:can't convert Hash into String

Rails 3.0.7で作業し、組み込みの単体テストフレームワークを使用します。

ありがとう。

4

2 に答える 2

3

する必要はありませんcd。あなたは簡単に...

task :do_unit_tests do
  Rake::Task['test:units'].invoke
end

しかし、本当に必要な場合はcd、それがシェル命令の呼び出し方法です。

task :do_unit_tests do
  sh "cd #{Rails.root}"
  Rake::Task['test:units'].invoke
end

まあ、実際には短いバージョンがあります。クリスが他の答えで述べたようにcd、命令には特別なエイリアスがあるので、あなたはただ...

task :do_unit_tests do
  cd Rails.root
  Rake::Task['test:units'].invoke
end

さらに詳しく知りたい場合は、JasonSeiferのRakeチュートリアルとMartinFowlerの「RakeBuildLanguageの使用」の記事をお勧めします。どちらも素晴らしいです。

于 2011-09-11T05:37:45.070 に答える
1

文字列に含まれていない値を補間しようとしています。また、rake test:units引数を使用したメソッド呼び出しであるかのように扱っていますが、そうではありません。

cdの値でメソッドを呼び出すように行を変更Rails.rootし、2番目の行をシェル命令に変更します。

task :do_unit_tests do
  cd Rails.root
  `rake test:units`
end
于 2011-09-11T05:34:23.820 に答える