ruby net / ssh无法远程执行rake命令

时间:2013-01-21 17:41:34

标签: ruby-on-rails ruby rake net-ssh

您好我正在尝试使用ruby net / ssh gem(2.0.24)连接到远程服务器并运行rake任务。我可以使用下面列出的脚本运行其他简单任务,但是rake失败了。

这是我的代码

Net::SSH.start("myremote_server", 'ubuntu', :keys => ['abcdef.pem'], :paranoid => false, :verbose => :debug) do |ssh|
  result = ssh.exec!("cd a_rails_directory; rake sunspot:solr:start")
  puts result
  ssh.loop
end

我收到以下错误消息

rake aborted!
uninitialized constant Bundler
/home/ubuntu/a_rails_directory/config/boot.rb:9:in `rescue in <top (required)>'
/home/ubuntu/a_rails_directory/config/boot.rb:5:in `<top (required)>'
/home/ubuntu/a_rails_directory/config/application.rb:1:in `<top (required)>'
/home/ubuntu/a_rails_directory/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

当我进入远程服务器手动时,我可以非常轻松地运行rake taks,但它不适用于net / ssh,如上所述。

不知何故,我觉得我没有连接正确的shell或正确访问路径变量,但我不确定,我也不知道如何修复它。 有什么想法吗?

TIA

1 个答案:

答案 0 :(得分:3)

没关系。想出了如何加载相关的红宝石路径信息

result = ssh.exec!("[[ -s \"$HOME/.rvm/scripts/rvm\" ]] && source \"$HOME/.rvm/scripts/rvm\" ; cd rails_directory; rake sunspot:solr:start")