2

こんにちは、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)

リモートサーバーに手動でSSH 接続すると、rake taks を非常に簡単に実行できますが、上で概説したように net/ssh では機能しません。

どういうわけか、適切なシェルまたはパス変数への適切なアクセスに接続していないように感じますが、よくわかりませんし、修正方法もわかりません。何かご意見は?

ティア

4

1 に答える 1

3

気にしない。関連するルビーパス情報をロードする方法を見つけました

result = ssh.exec!("[[ -s \"$HOME/.rvm/scripts/rvm\" ]] && source \"$HOME/.rvm/scripts/rvm\" ; cd rails_directory; rake sunspot:solr:start")
于 2013-01-21T17:48:18.063 に答える