これは他の質問と似ているかもしれませんが、ここには少しの歪みがあります。/home/rails/Rakeと/ home/rails/test_appという2つのディレクトリがあります。レールディレクトリは、すべての私のレールプロジェクトを配置する場所です。Rakeで別のタスクを呼び出すには
Rake内では、私はRakefileとcreate.rakeファイルを持っています。
は、これは何
namespace :setup do
desc "Install"
task :create do
sh 'git init'
#some other code
end
end
が明らかなものを
namespace :setup do
desc "something"
task :init do
print "Name of the destination directory: "
name = STDIN.gets.strip
cp_r '.', "../#{name}/lib/tasks"
cd "../#{name}"
sh "rake setup:create"
end
end
そしてcreate.rakeのように私のrakefile表情のです。 Rakeディレクトリの内容を/ test_app/lib/tasksにコピーしたいと思います。次に、ディレクトリをtest_appに変更し、test_app/lib/tasksに配置されたinstall.rakeファイルで定義されたsetup:create taskを実行します。これはうまくいきますが、これを実行するレーキの方法ですか?誰も私にそれがどのように行われたのか、レイクのやり方についての少しのヒントを与えることができます。
$ rake setup:init
Name of the destination directory:
testapp
cp -r . ../testapp/lib/tasks
cd ../testapp
rake aborted!
Don't know how to build task 'setup:create'
/home/TradeRaider/rails/Rake/Rakefile:8:in `block (2 levels) in <top (required)>'
/home/TradeRaider/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
/home/TradeRaider/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => setup:init
(See full trace by running task with --trace)
実際に試しましたが、私の場合はうまくいかないようです。最初にrake setup:initと呼ぶと、〜/ rails/Rake/Rakefileを取り出してinitタスクを実行します。もしsetup:createが同じファイルに定義されていれば、私はinvokeメソッドを使うことができました。しかし、私は〜/ rails/testapp/lib/tasksに定義されたタスクを呼び出そうとしています。その場合、動作しません。 – TradeRaider
何か不足していますか? – TradeRaider
は奇妙に聞こえますが、どのようなエラーがありますか? – apneadiving