これはかなり古い質問だと思いますが、以下は SSHKit クラスを開いてログイン シェルを有効にする方法を示しています。
# backend/sshkit.rb
module SSHKit
class CommandMap
class SuffixProvider
def initialize
@storage = CommandHash.new
end
def [](command)
@storage[command] ||= []
@storage[command]
end
def to_s(command)
self.[](command).join(" ")
end
end
def [](command)
cmd = []
if prefix[command].any?
prefixes = prefix[command].map{ |prefix| prefix.respond_to?(:call) ? prefix.call : prefix }
cmd.push(prefixes.join(" "))
end
cmd.push(@map[command])
cmd.join(" ")
end
def suffix
@suffix ||= SuffixProvider.new
end
end
class Command
def to_s
[SSHKit.config.command_map[command.to_sym], *Array(args), SSHKit.config.command_map.suffix.to_s(command.to_sym)].compact.join(' ')
end
end
end
SSHKit コマンド マップを定義bash --login
して、特定のコマンドを有効にできるようになりました。
SSHKit.config.command_map[:rvm].prefix("bash --login '")
SSHKit.config.command_map[:rvm].suffix("'")
:rvm
これで、以下のようなコマンドを使用できます。
execute :rvm, :use, '2.2.2', '--install'
# => bash --login 'rvm use 2.2.2 --install'
これをさらに説明するブログ投稿を書きました。ただし、必要な場合にのみログイン シェルを使用することをお勧めします。