讓我們說我有這樣的Rake任務:用Rake執行系統命令外面包範圍
namespace :db do
namespace :dump do.
desc 'Backup database dump to s3'
task :backup => :environment do
cmd = ['backup', 'perform', '-t project_backup', "-C#{Rails.root.join 'lib', 'backup', 'config.rb'}"]
system(*cmd) # ...I've tried `` & exec() sa well, same thing
end
end
end
備份的寶石是站在哪個依賴關係需要從應用程序捆綁隔離單獨的紅寶石寶石應用。換句話說,它不能成爲Gemfile
的一部分。這種寶石只需安裝在gem install backup
當我跑過來的bash控制檯backup
命令,它成功運行:
$ backup perform -t validations_backup -c /home/equivalent/my_project/lib/backup/config.rb
當我執行rake db:dump:backup
我會得到
backup is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
...這是同樣的事情,當我運行備份命令與bundle exec
從bash
$ bundle exec backup perform -t validations_backup -c /home/equivalent/my_project/lib/backup/config.rb
...這意味着backup
命令在作爲rake任務的一部分運行時通過bundler執行。
我的問題:如何運行rake db:dump:backup
outsite管束範圍,這意味着backup
命令那倒在捆綁被執行?
謝謝
...順便說一句,它成功地作爲一個遠程capistrano任務 – equivalent8
你解決了嗎?我有同樣的問題... – Lichtamberg
不,不是由Rake我仍然使用Capistrano來做到這一點。以Capistrano爲例發帖回覆 – equivalent8