ruby-postgresインストール

% sudo sh
# ARCHFLAGS='-arch i386' gem install ruby-postgres

postgresqlをUniversalにせずにコンパイルした場合、これが一番手っ取り早そう。
ちなみに、

% export ARCHFLAGS='-arch i386'
% sudo gem install ruby-postgres

はダメ。どうもARCHFLAGSが引き継がれないっぽい...

% sudo sudo -V

によれば

Environment variables to remove:
PERL5OPT
PERL5LIB
PERLLIB
JAVA_TOOL_OPTIONS
SHELLOPTS
PS4
BASH_ENV
ENV
TERMCAP
TERMPATH
TERMINFO_DIRS
TERMINFO
DYLD_*
_RLD*
LD_*
PATH_LOCALE
NLSPATH
HOSTALIASES
RES_OPTIONS
LOCALDOMAIN
CDPATH
IFS

とのことだから、ARCHFLAGSは引き継がれそうなものなのだが...

ディレクトリ深堀り

ruby スクリプトディレクトリを作る場合は Dir.mkdir メソッドを使いますが、これって例えば「./hoge/hage/huge」という階層構造のディレクトリを一気に作成するといったようなことはできませんよね。

FileUtils#mkdir_pがあります。

require 'fileutils'

FileUtils.mkdir_p('./hoge/hoge/hoge')

忘れがちなライブラリですが、時々でいいから思い出してあげてください...

プログラミングRuby 第2版 ライブラリ編

プログラミングRuby 第2版 ライブラリ編

Leopardにしたので

メインマシン(初代MacBook Pro)のOSをLeopardにしたので、環境をいじってみることにした。

とりあえず、Apacheが2.2.6になっていることに気づいたので、まずはmpmがどうなっているかを調べてみる。

% httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

そっかーpreforkなのねー。
正直workerの方が好みなので、それだけのためにソースビルドすることにする。
欲しいのはhttpdだけなんで、デフォルトモジュールを除外、mpmをworkerでコンパイルする。
一応レイアウトもDarwinにしておく*1
configureにするとこんな感じ。

% ./configure --with-mpm=worker --enable-module=so --disable-all \
--with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config \
--disable-authz-host --disable-authz-groupfile --disable-authz-user \
--disable-authz-default --disable-auth_basic --disable-include --disable-filter \
--disable-log-config --disable-env --disable-setenvif --disable-mime \
--disable-status --disable-autoindex --disable-asis --disable-cgid --disable-negotiation \
--disable-dir --disable-actions --disable-userdir --disable-alias --disable-authn-default \
--disable-authn-file --enable-layout=Darwin

で、ビルドが終わったら、ローカルディレクトリのhttpdを/usr/sbinにコピー(念のためオリジナルも保存)

% cp /usr/sbin/httpd /usr/sbin/httpd.bak
% cp ./httpd /usr/sbin

ところがここでlibphp5.soをアクティブにしてconfigtestを行うとエラーが。
内容は

[crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.

だそうで。
なので、一旦PHPはオフにして、後でインストールすることにする。
Leopardクリーンインストールだから、どのみち必要な*2mysqlもインストールし直さないといけないし。

*1:これで、make installした時のパスもデフォルト通りになる

*2:PHPコンパイル