0

Railsで空の文字に置き換える必要がある次の文字列があります。多くのチュートリアルとドキュメントに従いました。私がこれを達成するのを手伝ってください。

弦:

/home/<someword>/dbdumps/backup.sql

次のように置き換えられます:

backup
4

4 に答える 4

1

パスからファイル名を取得するには、File#basenameを使用します

File.basename('/home/<someword>/dbdumps/backup.sql', '.sql')   
#=> 'backup'
于 2012-12-31T07:09:37.110 に答える
0

最も簡単な解決策は、次のようなgsub(文字列置換)です。

string = "home/<someword>/dbdumps/backup.sql"
new_string = string.gsub(%r{home/(.*)/dbdumps/backup.sql}, 'backup' )

これは、文字列置換の簡単な例です。

于 2012-12-31T07:08:08.133 に答える
0

「someword」だけが変更される場合は、正規表現も必要ありません。推定

path = "/home/<someword>/dbdumps/backup.sql"

それから

path.split("/").last.split(".").first

戻り値

=> "backup" 
于 2012-12-31T07:06:50.307 に答える
0

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

お役に立てれば

于 2012-12-31T07:39:11.953 に答える