3

我想在我的 Sinatra 应用程序中运行我的 Rakefile 中包含的 rake 任务(迁移)。我正在使用 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

4

2 回答 2

5

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

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

那更好。

于 2016-08-17T03:55:51.357 回答
2

Mina 用于ssh运行远程命令。这意味着命令在与您登录时不同的环境中运行。这会导致问题,rvm因为rbenv它们没有正确初始化。幸运的是,minarvm支持,你只需要设置它:

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

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

您可以为 rbenv (文档)做类似的事情

于 2013-11-16T03:15:28.447 回答