我嘗試在我的rake任務中運行system "./do_backup.py"
,其中do_backup.py是同一目錄中的python程序,但該命令無提示失敗。但是,我可以使用system "./do_backup.py"
來運行它。爲什麼我的系統調用在irb中工作,但沒有在rake任務中工作?
我在我的rake任務和IRB中都調用了system "whoami"
,用戶都是一樣的。
編輯
這裏的Rake文件:
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
'Kernel.system()'工作正常,從內Rakefiles ;我的猜測是你在調用它之前改變了目錄。請發佈你的Rakefile。 – 2012-07-28 01:56:14
對我很好。你是從Python腳本所在的目錄運行它的嗎? 'system「ls -l ./do_backup.py」'顯示什麼?最後一次調用'system()'(啓動Python腳本的那個)的返回值是什麼? – 2012-07-28 02:12:01
你是對的!它從rails項目的根目錄執行rake任務,而不是'lib/tasks'。你如何建議我從rake任務內部進入'lib/tasks'?當然''系統「cd lib/tasks'不起作用 – 2012-07-28 02:19:51