2011-07-11 35 views
2

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

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 

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

我在做什么错?谢谢您的帮助。

+0

你是怎么解决这个问题的?有同样的问题。尝试伊恩解决方案,并从他们工作的嘘运行相同的命令。但是,这并没有解决这个谜团 – Jepzen

回答

0

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

1

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

# default_environment['PATH']='<your paths>:/usr/local/bin:/usr/bin:/bin' 
# default_environment['GEM_PATH']='<your paths>:/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 
0

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

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

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

我试过了。在我的本地机器上,输出是耙(10.0.3,10.0.2,10.0.0,0.9.2.2) 在我的生产上,它说 耙(10.0.3,10.0.2) 但耙是显示为红色。那不是一个好兆头吗?我已经写在gemfile中使用10.0.3 – Jepzen

+0

@Jepzen rake 0.8.7/0.9.2适用于Rails 2.3。* – Anatoly

+0

我的错误与原始问题相同,但版本不同。所以我认为这也可以帮助我。 – Jepzen

0

要拉在捆扎机帽任务,只需添加到您的deploy.rb文件:

require "bundler/capistrano" 

运行现在,cap部署将自动运行远程服务器上的捆绑软件安装,并提供易于部署的选项,并且rake将可用于部署的以下步骤。

上限任务的帮助中提供了可以更改的选项列表。要看到它,运行cap -e bundle:install。