Capistrano迁移部署

我有一个关于Ruby on Rails和Capistrano部署的问题。 我做的第一件事是使用以下方法部署我的Rails应用程序:

cap deploy:update 

当我有迁移时,我尝试运行Capistrano命令:

 cap deploy:migrations 

我收到错误:

 Could not find rake-0.9.2 in any of the sources 

我必须SSH到服务器的当前文件夹并手动运行

 rake RAILS_ENV=production db:migrate 

通过迁移运行每个部署显然是一个巨大的痛苦。

我究竟做错了什么? 谢谢您的帮助。

您可能需要取消注释并调整config/deploy.rb的以下行:

 # default_environment['PATH']=':/usr/local/bin:/usr/bin:/bin' # default_environment['GEM_PATH']=':/usr/lib/ruby/gems/1.8' 

此外,如果您使用的是RVM,则可能需要添加几行:

 # adjust if you are using RVM, remove if you are not $:.unshift(File.expand_path('./lib', ENV['rvm_path'])) require "rvm/capistrano" set :rvm_ruby_string, '1.9.2' set :rvm_type, :user 

这听起来像部署:迁移任务没有得到正确的bash环境。 你能看到在服务器上运行的完整命令吗? 它是否使用sudo? 它是否使用捆绑器? 获取整个命令并尝试从SSH会话中运行命令。

你在本地有一个较新版本的rake gem,但远程服务器有较旧的版本,可以正常使用你使用的Rails版本。

你能用本地和远程的“gem list | grep rake”来检查吗? 您可以在Gemfile中指定rake gem版本并重新部署应用程序

 #Gemfile gem 'rake', '0.8.7' # or '0.9.2' 

引入 Bundler Cap任务,只需将其添加到deploy.rb文件中:

 require "bundler/capistrano" 

运行上限部署现在将使用部署友好选项自动在远程服务器上运行bundle install,并且rake将可用于以下部署步骤。

可以在cap任务的帮助中找到可以更改的选项列表。 要查看它,请运行cap -e bundle:install。