我想在我的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
答案 0 :(得分:5)
ssh
执行rake并不是一个明智的举动。
mina 'rake[rake_taks:taks_whatever_you_write]' on= environment
更好。
答案 1 :(得分:2)
Mina使用ssh
来运行远程命令。这意味着命令在登录时在不同的环境中运行。这会导致rvm
和rbenv
出现问题,因为它们未正确初始化。幸运的是,mina
有rvm
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)
做类似的事情