2013-07-11 60 views
2

我在使用FileUtils#sh的Rails 4應用程序中運行Rake命令時遇到問題。我使用RVM作爲我的版本管理器,似乎無法找出問題所在。我得到的錯誤是:使用rake任務與heroku進行交互

$ rake db:clone_production:to_local --trace 
** Invoke db:clone_production:to_local (first_time) 
** Execute db:clone_production:to_local heroku pgbackups:capture --expire -r production 
Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 
rake aborted! 
Command failed with status (18): [heroku pgbackups:capture --expire -r produ...] 
/Users/trevor/.rvm/gems/[email protected]/gems/rake-10.1.0/lib/rake/file_utils.rb:54:in `block in create_shell_runner' 
... Some more stack trace ... 

其他Rake任務正常工作,如$ rake db:migrate但我似乎不能運行shell腳本。 rake任務是這樣的:

# ./lib/tasks/db.rake 
namespace :db do 
    ... 
    namespace :clone_production do 
    desc "Clone production database to local database" 
    task :to_local do 
     sh "heroku pgbackups:capture --expire -r production" 
     file = "tmp/db/backup_#{ Time.now.getutc.to_s.gsub(/ /, /_/) }.dump" 
     sh "curl -o #{ file } `heroku pgbackups:url -r production`" 
     sh "pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d myapp_development #{ file }" 
    end 
    end 
end 

我的道路看起來不錯:/Users/trevor/.rvm/gems/[email protected]/bin:/Users/trevor/.rvm/gems/[email protected]/bin:/Users/trevor/.rvm/rubies/ruby-2.0.0-p195/bin:/Users/trevor/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/X11/bin:/Users/trevor/workspace/adt-bundle-mac/sdk/tools:/Users/trevor/workspace/adt-bundle-mac/sdk/platform-tools

我使用這些版本Rake - 10.1.0Rails - 4.0.0ruby - 2.0.0-p195

#./.ruby-version 
2.0.0-p195 

#./.ruby-gemset 
myapp 
+0

有沒有在你的項目文件夾中的'.rvmrc'文件 - 如果是這樣,這是什麼內容? –

+0

有一個.ruby版本,它包含2.0.0-p195 – trev9065

回答

1

你可以嘗試在一個乾淨的環境中運行Heroku的命令:

Bundler.with_clean_env { sh "heroku pgbackups:capture --expire -r production" } 
1

所以我想通了出什麼事了。當您運行耙子任務時,Heroku工具帶不會加載,這意味着您必須在您的開發組中安裝Heroku gem以在耙子任務中使用Heroku命令。只要有Heroku工具帶的人就應該知道。