Railsで空の文字に置き換える必要がある次の文字列があります。多くのチュートリアルとドキュメントに従いました。私がこれを達成するのを手伝ってください。
弦:
/home/<someword>/dbdumps/backup.sql
次のように置き換えられます:
backup
Railsで空の文字に置き換える必要がある次の文字列があります。多くのチュートリアルとドキュメントに従いました。私がこれを達成するのを手伝ってください。
弦:
/home/<someword>/dbdumps/backup.sql
次のように置き換えられます:
backup
パスからファイル名を取得するには、File#basenameを使用します
File.basename('/home/<someword>/dbdumps/backup.sql', '.sql')
#=> 'backup'
最も簡単な解決策は、次のようなgsub(文字列置換)です。
string = "home/<someword>/dbdumps/backup.sql"
new_string = string.gsub(%r{home/(.*)/dbdumps/backup.sql}, 'backup' )
これは、文字列置換の簡単な例です。
「someword」だけが変更される場合は、正規表現も必要ありません。推定
path = "/home/<someword>/dbdumps/backup.sql"
それから
path.split("/").last.split(".").first
戻り値
=> "backup"
Rails アプリで Net:SSH:start( ) を実行し、ssh.exec!('ls /home/ /dbdumps/ .sql') を実行します。出力を文字列に送信してから、ファイルのリストを表示する必要があります。そのために、出力を文字列に取り、gsub を実行しようとしています。これは正しいアプローチですか?
私はそれをきれいだとは思いませんが(単純なコード、エラーチェックなし、リクエストでループします)、このようなものはあなたのために仕事をすることができます. バックアップ名だけにするか、完全なパスにするかによって異なります。
ssh.exec!("ls -l /home/") do |channel, stream, data|
directories << data if stream == :stdout
end
directories.each do |dir|
ssh.exec!("ls -l /home/" + dir + "dbdumps") do |channel, stream, data|
backup_names << /home/" + dir + "/" + data if stream == :stdout
end
end
お役に立てれば