简体   繁体   中英

How can I run Rake tasks more easily?

Running Rake tasks can be awkward.

The commands tend to be really long.

For example...

$ bundle exec rake some_project:clear_expired_sessions

Also, I may not always remember the exact name of some task I only use occasionally.

So I have to discover task's name first like this and then copy and paste it into the command line...

$ bundle exec rake -T some_project

I'm using Zsh on OS X with oh-my-zsh and the Rake plugin.

It provides tab-completion of Rake tasks, but you still have to type " bund exec rake " the completions are really slow to load -- several seconds on my machine.

Is there a more efficient way?

You can always add an alias to your .bashrc or your .bash_profile to avoid bundle exec rake in the future.

alias rake='bundle exec rake'

Of course now bundle exec is implicated whenever you run rake , its up to you to decide if you want that.

or for project specific (lets say your project is rails_blog)

alias rkblog=railsblogtasks()
function railsblogtasks(){
  cd /path/to/blog/;
  bundle exec rake -T;
end

alias rkblogrun=runblogtask()
function runblogtask(){
  cd /path/to/blog/;
  bundle exec rake $1;
end

Now $ rkblog will show all your rails_blog tasks and $ rkblogrun <task> will run any task in your rails_blog project. This can of course be refactored and abstracted, but there is a general idea.

One quick simplication:

task :example_alias => :environment do
  Rake::Task[some_project:clear_expired_sessions].invoke
end

Then you can simply do

  $ rake example_alias

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM