CentOS 5 + Rails 3 + native extensions のメモ

とても今さらな環境の話と Rails 3 が組み合わさってるけど、だからこそのメモ。

まとめ

  • 開発環境が Mac OSX 10.5 ( のちに 10.6 )
  • staging および production が RHEL 5 ( clone )

で、Rails 3, 特に面倒の多い native extension をどうするかを整理した。最終的には以下のような感じに。

ちなみに DBMS は development, test を SQLite で、それ以外を PostgreSQL で構築している。

できあがったGemfile

gem 'sqlite3-ruby', '< 1.3', :require => 'sqlite3'
gem 'rmagick', '< 2'
group :production do
  gem 'pg'
end

※ あとで気づいたけど

bundle install --without=production

すれば development 環境で PostgreSQL は要らなかった…。

OSX 10.5

MacPorts を使って必要なバイナリをインストールしている。

  • Ruby 1.8.7
  • ImageMagick 6.6.7 + rmagick 1.15.17
  • SQLite 3.7.4 + sqlite3-ruby 1.2.1
  • PostgreSQL 8.1.x + pg 0.10.1

CentOS 5

もちろん yum 管理。Ruby は endpoint の repository を使って REE を利用。

  • Ruby Enterprise Edition ( 1.8.7 via endpoind )
  • ImageMagick 6.2.8 + rmagick 1.15.17
  • SQLite 3.3.6 + sqlite3-ruby 1.2.1
  • PostgreSQL 8.1.x + pg 0.10.1

cf.

補足

Ruby 1.8 なら RMagick 1 を入れられる

  • ImageMagick 6.3.0 で新機能が加わった
  • RMagick 1 は 6.3.0 の新機能が必要なければ使える
  • RMagick 1 は Ruby 1.9 はサポートしていない

ということで production で Ruby 1.8 を使う場合、開発環境では rvm で 1.8 を使うことで RMagick 1 をインストールして動作を合わせることができる。最近の開発環境はたぶん Ruby も ImageMagick も工夫しないと新しいものが入ってしまうので注意が必要かも。

今回のケースでは RHEL 5 clone で欲張って Ruby 1.9 を使おうとしてしまった場合にはややこしいことになっていた。

cf.

Which version of RMagick is right for me? - RMagick Download Page

RMagick は root 権限が必要で bundle install できない?

  • /usr/share/RMagick とか /opt/local/share/RMagick にファイルを起きたがるため root 権限が必要で bundle install に失敗する
  • でもここでインストールするものはドキュメントだけ
  • 一度 bundle じゃなくて yum なりで ImageMagick をインストールする、手でディレクトリ掘るなどして permission 周りの問題を解消しておけば gem については root 権限なしで全部 vendor 以下に入れられる

MacPorts には postgresql-devel ないけど?

エラーメッセージを読んだり pg の README.OS_X を読めば分かるけど

--with-pg-config

で pg_config を指定してやれば ok.

自分の場合は

/opt/local/bin/pg_config -> /opt/local/lib/postgresql81/bin/pg_config

と link を張ってごまかした。

svn 1.5 以降の --force は結構便利

Subversion を使っています。1.5 っていつの話だよ、とか言 わ な い の。

なんだかんだ仕事関係のコードは中央に集約できているとあれこれ自動化ができて助かっています。

なんだけど、すべてのファイルが svn 管理下に入っているかというといろいろ事情があってそうはなっていない。そこで working copy 上には svn 管理しているファイルと管理していないファイルが共存するという、ちょっとややこしい状態になっている。

これだけなら svn status -v で ? が出てきてうざいで済む話なんだけど、

ある時点からあるファイルをリポジトリに突っ込むことにする

ということがまま起きる。これはもう本当に起きるからしょうがない。

この場合、svn 1.4 までだと add をした working copy とは別の working copy で svn update したときにすでに同じ名前のファイルがあるよと怒られて update が止まってしまう問題があった。どうやって対処するか。

怒られたら手で消し、また update して怒られたら手で消す。

なにこのアナログな感じ。これが svn 1.5 以降では

svn update --force

一発で済む。ステキ。

あと今日こんなことした。

10:37:52 >#Twitter@t:wtnabe< find . -type l のつもりで type f で
xargs rm してた。集中してないな。
10:39:53 >#Twitter@t:wtnabe< .svn ぶっこわれた
10:43:06 >#Twitter@t:wtnabe< find . -name .svn | xargs rm -fr ; svn
co --force で復旧。

まぁ、普通はあんまりないと思うけど。

nkf 2.0.5 について

2.0.5について (sf.jp)

2.0.5 を4月上旬に出そうと思うんだけど、m および M オプションについてちょっと悩んでるから意見ちょうだい、とのこと。

個人的には m および M オプション、特に m オプションはこれがなきゃ nkf 使ってるかどうかあやしいくらいに便利なオプションなので、何か協力できるといいんだけど、そもそも sf.jp にアカウントがないというダメさ加減orz

ID 取るか。ID 取った。

LaTeX2e 10周年

http://slashdot.jp/article.pl?sid=04/03/17/0727244

そうかぁ。この10年、TeX を使えるようになりたいと思いつつ、結局必要性が面倒くささを上回ることなくきてしまいました。今後も自分が直接 TeX に手を出すことはなさそうだけど、何らかの形でお世話にはなるんじゃないかと思っています。

オープンソースソフトウェアになったのですね。重ねておめでとうございます。

StarOffice に Excel マクロ変換ツール

Ruby の attr_accessor が激しく便利

未だに : の意味がよく分からないが、これは激しく便利だー。メンバ変数に直接アクセスできない Ruby ではアクセッサが命になるんだけど、このアクセッサメソッドを簡単に追加したり削除したりできる。すげーいい。

カエルくん

天使悪魔ネタに近い感じ。脳内で現実的で慎重派のウシくんとお調子もののカエルくんが会話をするというネタ。mhatta 氏、wakatono 氏が使っているので何かと思ったら大学生日誌とかで使われている模様。あまりないなぁ。というか自分自身がカエルくんな気がするウシ年生まれの行動の遅い男なのだよ、おれは。

シリアル接続キター

あれこれ読んで、標準の ttyd0(着信用ポート0) ではなく

cuaa0   "/usr/libexec/getty std.9600" vt100     on secure

でなんとか。(cuaa0 は発信用のポート0。secure になっているところは insecure の方が本当はいいんだけど、insecure のままシングルユーザーモードって使えるのかなぁ?)最初アダプタが COM5 で認識されたけど TeraTerm じゃ COM4 までしか選択できないよーってことでポート変えたりとか問題があったけど、とりあえず接続できることは分かった。これでシングルユーザーモードもなんとかなるような気がする。

しかし 9600ボーは遅い。nifty に tty で手打ち巡回とかしてた時代を思い出した。もっと速いスピードで接続したいんだけど、とりあえず 38400 では繋がらなかった。アダプタの制限なのかなぁ?

あれ。115200 ではきた。んー? 繋がるスピードと繋がらないスピードがあるのか? まーとりあえず cuaa でなら繋がるってことは分かった。ハイパーターミナルではまだあまり詳しく調べていないけど、どうもダメぽ。cygwin 上で何か通信ソフトを使うって手で TeraTerm を追放できないか、ちょっと実験してみっかな。そのうち。これだけのために TeraTerm は入れておきたくないし。(まだ自分の機械には入りっぱなしだったけど。)

シリアルコンソール @bird.dip.jp によると hterm はイケるのか。hypertrm とは違うんだよな?

あれこれ調べたけど、TeraTerm を使うのがいちばん簡単そうだ。。。まーすでに展開済みのファイルがあるのでインストーラ使わずにこれをコピーしていけばいいわけで、そういう意味ではそれほど面倒でもないか。別に複雑な設定を保存しなきゃいけないような使い方じゃないしな。

あとは Linux でのやり方が分かれば割と使いでのあるスキルに違いない。

遅くなりましたが Mozilla 1.3

ブラウザネタが続いたので、なんか別にいっかーとか思ってしまってました。

スプラッシュがかわいらしくなりました。やっぱ不評だったんすかね。

Mozilla で Internet Keyword を使う

Phoenix の検索窓が気に入ってしまったので、Mozilla でも使いたいと思ったのですが、Mozilla は Sidebar が標準。はて、これはでかくて邪魔だなぁ。

つーことで Preferences → Navigator → Smart Browsing で Enable Internet Keywords にチェックを入れて、user.js に

user_pref("keyword.URL", "http://www.google.co.jp/search?q=");

こんな感じで。これでアドレスバーに直接キーワードを入れちまえばオッケーオッケー。おぉこりゃ楽ちんだ。なんか、Mozilla 1.3 でいいような気がしてきた。

調子に乗って aquaMOZ

すげー重い。

About

例によって個人のなんちゃらです