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。