@tanakashiの技術ブログ

Cakeシェルの使い方をよく忘れてしまうのでまとめ。

vagrantで実行

実行コード

下記を vagrant ssh で vagrant内にアクセスした際に実行。

sh /vagrant/cake/app/Console/cake ${シェル名(Snake case)} main  

シェル名はスネークケース(小文字&アンダーバー繋ぎ、単数形)で打つ。

上記を実行することで、 public function main() 関数が走る。
違う関数を利用したい際には main を利用したい関数に置き換えればOK。

例)

sh /vagrant/cake/app/Console/cake ${シェル名(Snake case)} test  

上記により public function test() が走る。

引数

実行

sh /vagrant/cake/app/Console/cake ${シェル名(Snake case)} main 'variable'  

以下に値が保持されている。渡した順に配列として渡されている。

$this->out($this->args[0]);  

出力結果

'variable'  

内容の確認

$this->log();  
$this->out();  

logは tmp/logs/error.log に記載される。
outはそのままコンソール上で表示される。

DBとの接続

Modelと同様、public $uses = ['DbName']; でOK。

Controllerでの利用

Controllerでシェルを走らせたい場合、 Appで読み込む必要がある。
TestShellを利用する場合は、以下の通りに走らせる。

App::uses('TestShell','Console/Command');  

public function do_test() {  
    $this->autoRender = false;  

    $shell = new TestShell();  
    $shell->startup();  
    $shell->main();  
}  

これによりシェルのmain関数が実行される。
引数を渡す場合は、通常と同様、 $shell->main($variable, $valiable2); などとして渡す。

この記事へのコメント

まだコメントはありません