如何使用mina执行rake任务?

时间:2013-11-16 00:04:51

标签: ruby sinatra rake mina

我想在我的Sinatra应用程序中运行我的Rakefile中包含的rake任务(migrate)。我正在使用Mina进行部署。 rake migrate如果我在服务器或我的开发上运行它会很有效,但是我无法让Mina执行任务。

我当前的部署在config/deploy.rb

中看起来像这样
task :deploy => :environment do
  deploy do
    # Put things that will set up an empty directory into a fully set-up
    # instance of your project.
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'

     to :launch do
      queue "sudo /opt/nginx/sbin/nginx -s reload"
    end
  end
end

我在部署块和发布块中尝试了queue "rake migrate"queue "#{rake} migrate",但它始终抱怨bash: command not found

2 个答案:

答案 0 :(得分:5)

在Mina中,使用ssh执行rake并不是一个明智的举动。

mina 'rake[rake_taks:taks_whatever_you_write]' on= environment

更好。

答案 1 :(得分:2)

Mina使用ssh来运行远程命令。这意味着命令在登录时在不同的环境中运行。这会导致rvmrbenv出现问题,因为它们未正确初始化。幸运的是,minarvm support,你只需要设置它:

require 'mina/rvm'
task :environment do
  invoke :'rvm:use[ruby-1.9.3-p125@gemset_name]'
end

task :deploy => :environment do
  ...
end

你可以为rbenv(documentation

做类似的事情