2013-11-16 5 views
3

Я хочу запустить задачу rake (migrate), содержащуюся в моем Rakefile, в моем приложении Sinatra. Я использую Мину для развертывания. 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

+0

Вы используете 'rbenv' или' rvm' на своем сервере? – mechanicalfish

+0

@mechanicalfish Я использую RVM –

ответ

2

Mina использует ssh для выполнения удаленных команд , Это означает, что команды запускаются в другой среде, как при входе в систему. Это вызывает проблемы с rvm и rbenv, поскольку они не инициализируются должным образом. К счастью, mina имеет rvm support, вы просто должны установить его:

require 'mina/rvm' 
task :environment do 
    invoke :'rvm:use[[email protected]_name]' 
end 

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

Вы можете сделать подобную вещь для rbenv (documentation)

4

в Мине, используйте ssh для выполнения грабли не совсем умный ход.

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

, что лучше.

Смежные вопросы