Obwohl dies klingt ähnlich wie die anderen Fragen, die Sie hier finden, gibt es eine kleine Wendung. Ich habe zwei Verzeichnisse, sagen wir/home/rails/Rake und/home/rails/test_app. Im Rails-Verzeichnis platziere ich alle meine Rails-Projekte.Wie rufe ich eine andere Aufgabe in Rake
Innen Rake, ich habe eine Rakefile und eine create.rake Datei. Diese
ist, was meine Rakefile Look wie
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
Und create.rake
namespace :setup do
desc "Install"
task :create do
sh 'git init'
#some other code
end
end
Was sie tut, ist offensichtlich. Ich möchte den Inhalt des Rake-Verzeichnisses nach/test_app/lib/tasks kopieren. Wechseln Sie dann zu test_app und führen Sie setup: create task aus, die in der install.rake-Datei definiert ist, die jetzt in test_app/lib/tasks abgelegt ist. Das funktioniert, aber ist das der Rechenweg? Kann mir jemand einen kleinen Hinweis geben, wie es gemacht wird, der Rake-Weg. Hier
ist der Fehler, die ich bekomme, wenn ich invoke Methode verwendet:
$ 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)
Ich habe es tatsächlich versucht, aber es scheint nicht in meinem Fall zu funktionieren. Wenn ich rake setup: init anfange, ruft es zunächst die Datei ~/rails/Rake/Rakefile auf und führt die Init-Task aus. Wenn setup: create in derselben Datei definiert wäre, hätte ich die Methode invoke verwenden können. Aber ich versuche, eine in ~/rails/testapp/lib/tasks definierte Aufgabe aufzurufen. In diesem Fall würde es nicht funktionieren. – TradeRaider
Oder fehlt mir etwas? – TradeRaider
klingt komisch, welchen Fehler hast du? – apneadiving