为什么我的系统调用工作在irb而不是rake任务?

时间:2012-07-28 01:23:06

标签: ruby rake

我尝试在我的rake任务中运行system "./do_backup.py",其中do_backup.py是同一目录中的python程序,但该命令无提示失败。不过,我可以使用system "./do_backup.py"运行它。

我在rake任务和IRB中都调用了system "whoami",用户是相同的。

修改

这是rakefile:

desc "Back up a file onto S3"
task :backup do
     S3ID = "AKIAJM3NRWxxx"
     S3KEY = "0A5kuzV+E1dkaPjxxx"
     SRCBUCKET = "rose-test-4"
     NUM_BACKUP_BUCKETS = 2

     system "whoami" 
     system "./do_backup.py #{S3ID} #{S3KEY} #{SRCBUCKET} #{NUM_BACKUP_BUCKETS}"
end

1 个答案:

答案 0 :(得分:2)

正如评论中所讨论的那样,这是从错误的目录运行的。您可以使用Dir.chdir()更改目录。例如:

  ...
  Dir.chdir("lib/tasks")
  system "./do_backup.py #{S3ID} #{S3KEY} #{SRCBUCKET} #{NUM_BACKUP_BUCKETS}"
end

当然,正如@muistooshort指出的那样,更简单的事情就是从它所在的位置运行它:

  system "#{Rails.root}/lib/tasks/do_backup.py #{S3ID} #{S3KEY} #{SRCBUCKET} #{NUM_BACKUP_BUCKETS}"