gitで差分をファイルで抽出する

git管理してないサーバーへファイルを適用するときに使えます

[code lang=bash]
$ git archive –format=zip –prefix=web/ HEAD `git diff –name-only HEAD HEAD^` -o update.zip
[/code]

commit1つ分をupdate.zipファイルに圧縮、解凍するとwebディレクトリができます
git diff –name-only で差のあるファイルが表示できるようです

[code lang=bash]
$ git archive –format=zip –prefix=web/ HEAD `git diff –name-only HEAD HEAD^^` -o update.zip
[/code]

とすればcommit2つ分です
これでgit管理してないサーバーにコピーできます

「 Call to undefined function curl_init() 」エラーの回避法

Ubuntu 14.04 + Apache + PHP で開発中、エラーが発生

PHP Fatal error: Call to undefined function curl_init() in xxxx

phpでcurlが使えないようです

インストールします
$ sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

Apache再起動
$ sudo service apache2 restart

これで有効になりました

CakephpでUnknown status codeのinternal errorが発生した

Cakephpでデータベースの登録処理を作っていたらエラーが発生

cakephp-internal-error

internal-error??
検索したらキャッシュとかデータベースとか言われてました

ログを見ると
$ tail app/tmp/logs/error.log
2014-11-22 06:00:44 Error: [CakeException] Unknown status code
Request URL: /cakephp/comments/add
Stack Trace:
#0 /vagrant/cakephp/lib/Cake/Controller/Controller.php(785): CakeResponse->statusCode(’25’)
#1 /vagrant/cakephp/app/Controller/CommentsController.php(16): Controller->redirect(Array, ’25’)
#2 [internal function]: CommentsController->add()
・・・

リダイレクトでコード25でとぼうとしてる..

間違いはこれでした

$this->redirect(array('controller' => 'posts', 'action' => 'view'), $id);
// カッコの位置を修正して第一引数の配列にdataを入れる
$this->redirect(array('controller' => 'posts', 'action' => 'view', $id));

redirectの第2引数には、HTTPのレスポンスコードが入るようで
やっかいかとおもったらちょっとの違いでした

UbuntuにVagrantを入れてみた

Ubuntu 14.04にVagrantを入れてみました

VirtualBoxを入れる

UbuntuにVirtualBoxをインストールする
を参考にUbuntu 14.04のためsource.listには
deb http://download.virtualbox.org/virtualbox/debian trusty contrib
を追記、あとは同じです

vagrantを入れる

古いバージョンはgemでしたがいまはインストーラーがあります
https://www.vagrantup.com/downloads.html
からOSにあったものをダウンロードします

$ dpkg -i

rubyをrbenvで入れてたため
$ rbenv rehash
参考) Ubuntuにrubyを入れてみた

これでvagrantが使えます
$ vagrant -v
Vagrant 1.6.5

ベースにしたいboxを
https://vagrantcloud.com/
で探します

見つけたboxを
$ vagrant init (ボックス名)
で指定します

Ubuntu 12.04 ならpreciseで検索して
$ vagrant init ubuntu/precise32
とかです

これでVagrantfile
ができるので、必要であれば設定を変えたります

あとは
$ vagrant up
すればOSが立ち上がり
$ vagrant ssh
でsshでログインできます