Rake - pomoc - kilka czynnosci w jednym task'u (mozliwosc "selekcji")

Witam,

pytanie takie, czy za pomocą polecenia rake jest możliwość przygotowania takiego jakby autoexec’a, ktory by potrafil uruchamiac odpowiednie bloki zadań, cos w stylu tego co ponizej:

Wybierz co chcesz zrobic:
0 - wyswietl pomoc (i tutaj wyswietla pomoc w konsoli)
1 - zrob cos (robi cos)
2 - zrob cos 2 (robi cos 2)
3 - wyjdz (zamyka zadanie rake’owe)

chcialem moc w tych liczbach moc zawrzec kilka zadan rake’owych i wywolujac jedno zadanie rake do:cossss mialbym wyswietlone takie menu i dopiero po wyborze odpowiedniego numerka mialbym wykonana dana akcje (zadanie)

jezeli ktos gdzies takie cos wykorystuje to bede wdzieczny za wskazowki

Może wystarczy parametr tak jak w railsowym db:migrate:up/db:migrate:down?

rake db:migrate:up VERSION=20090716103439

W tasku jakiś switch czy if/elsif, a jak nie ma parametru to raise.

desc 'Runs the "up" for a given migration VERSION.' task :up => :environment do version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil raise "VERSION is required" unless version ActiveRecord::Migrator.run(:up, "db/migrate/", version) Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby end

no wlasnie, chcialbym wywyolywac rake’a bez parametrow, a dopiero jak “zaskoczy”, to zeby zadal pytanie “co chcesz zrobic” - wtedy czeka na nacisniecie (wpisanie) liczby i dopiero wtedy wykonuje okreslone zadanie… z ENV probowalem, ale w miare możliwości chcialem moc wyswietlic opis (pomoc) zeby ktos wiedzial ze jak wywola rake db:cossss to tam wszystko zostanie opisane co moze zrobic…
ze moze wykonac cos co jest pod 1, cos co jest pod 2, albo wyjsc z zadania…

jesli sie nie da, to trudno, jakos sie nie upieram… tak dla kogos kto wie co ma w rake’u podac to dziala, ale dla kogos innego co ma to wywolac, to nie wie jakie moze parametry zastosowac… tylko w tym widze problem…

ale i tak dzieki za sugestie

Można (taski rake to normalny kod Ruby), ale to się kłóci z filozofią rake.
Do podejmowania decyzji co dokładnie zrobić są właśnie parametry, przestrzenie nazw dla tasków oraz ich opisy…

skoro tak, to jakos przeboleje… poslucham bardziej doswiadczonych… dzieki Tomash

A ja tylko dodam, że używanie zmiennych środowiskowych jako parametrów powoduje niekontrolowany wyciek gałek ocznych.

task :love, [:male, :female] do |task, args| args.with_defaults :male => 'man', :female => 'woman' puts "#{args.male.upcase} loves #{args.female.upcase}!" end

[code]rake love
Man loves woman!

rake love[ruby, rails]
Ruby loves Rails![/code]

@nairda: mniam…ładne :slight_smile: