web-dev-qa-db-ja.com

rexでディレクトリを作成する方法

Rexが存在しない場合は、それを使用してディレクトリを作成したいと思います。私はこれを読みました https://www.rexify.org/docs/rex_book/working_with_files_and_packages/working_with_files.html しかし、それを行う方法が見つかりません。

ディレクトリなしでファイルを送信すると、次のエラーが発生します。

ERROR - upload: /usr/local/path/file.ext is not writable

ヒントはありますか?

1
Francesc Guasch

レックスの本のドキュメントは少し古いと思います。

こちらをご覧ください https://www.rexify.org/docs/api/ または(本日現在)最新のドキュメントはこちら:
https://www.rexify.org/docs/api/1.4/rex/commands/file.pm.html#file-file_name-options-
(現在のcpanバージョンが1.6であるのに対し、バージョン1.4と表示されますが、気にしないでください)

だから、例であなたの質問に答えるために:

task "backuptask", group => "mygroup", sub { 
    #
    # 1.) define the Backup Dir (you could do it without this step)                                                                                                                        
    my $backupdir = "/tmp/backup";  
    #                                                                                                      
    # 2.) "ensure" that the file is a (existing) "directory"        
    file $backupdir, 
            ensure=> "directory", 
            owner => "myowner", 
            group => "mygroup", 
            mode => 700, 
            on_change => sub { say "File was changed";};

    #                                                                                                                                    
    # 3.) define Backup File                                                                                                                         
    my $currTimestamp = strftime('%y%m%d',localtime);                                                                                     
    my $backupfile = "$backupdir/somebackup$currTimestamp";
    #                                                                            
    # 4.) "ensure" the the file is "present" at the defined path
    file $backupfile, ensure=> "present";

    ...execute something here...

}  ;                                                                                               
1
eli