redmineのインストールの続き

redmineのインストールにこんなにてこづるとは思ってなかったw、とはいえやり方さえ間違えなければ簡単なので、備忘録として書いておく。

redmineが対応しているrubyは1.8.7

Lionにプリインストールされているrubyは1.8.7なので、そのままで行けそうな感じだけど、gemのバージョンがredmineが想定しているものより高い為、たくさん警告が出てくる。これを回避するにgemのダウングレードという手があるそうだが、システムインストールされているライブラリのダウングレードはあまりしたくないので却下。

rbenvで別のrubyをインストールしてしまう。

twitterで教えてもらった。自分でぐぐった時にはrvmが見つかったのでこれでいいやと思ってたのだけど、どうやらrbenvの方が良いということらしい。情報も新しい。
ただ、Lionにはreadlineライブラリがないので、適宜homebrewでインストールしておく必要があるのはhomebrewでのrubyインストールもrvmでのも同じこと。

ruby-buildをインストールすると、rbenv installコマンドが使えるようになるということらしいので共にインストール。

$ brew install rbenv
$ brew install ruby-build

[参考]http://www.223soft.net/50

readlineのインストールも。

$ brew install readline
$ brew link readline

[参考]ケーズメモ

rubyのインストール

bash_profileにrbenvを読み込むようにしたら、rubyのインストール。
先にインストールしたreadlineライブラリを読み込むようにパスを指定する。

$ CONFIGURE_OPTS="--with-readline-dir=/usr/local" rbenv install   1.8.7-p352
||< 

インストールしたrubyを有効にする。
>|sh|
$ rbenv global 1.8.7-p352
$ rbenv rehash

なお、プリインストールのrubyには/usr/bin/rubyでアクセスできる。

redmineのインストール

redmineではsqlite3を使うことにする。サーバの設定も不要だし、接続設定は不要だし。

redminesubversionリポジトリからcheckoutする。

$ cd /usr/local
$ svn checkout http://redmine.rubyforge.org/svn/branches/1.2-stable redmine

うちの/usr/localは自分のアカウントが所有者なので、パーミッション気にしないで良いのである。自分しか使わないし、システムにインストールするわけでもないのに管理者権限必要というのもアレだし、かといって毎回インストールパスを指定するのも面倒なのでw

あとは公式サイト等を見ながら、必要なライブラリをインストールしてく。
ちなみに、gemのバージョンは1.6.2がインストールされてた。好都合。

$ gem install rails -v=2.3.11
$ gem install rack -v=1.1.1
$ gem install rake -v=0.8.7
$ gem install sqlite3

最新のバージョンであるrails3系ではredmineが動かないのでライブラリのバージョンには十分注意する。install → 動作確認 → uninstall → install のループはメンドクサイ。
[参考]RedmineInstall - Redmine

database.ymlを作成する。付属のサンプルからsqlite3のところをコピペ。

development:
  adapter: sqlite3
  database: db/test.sqlite3
$ rake generate_session_store
$ rake db:create
$ rake db:migrate

rakeコマンドを実行するといくつか足りないライブラリあるよと言われるので、それもインストールしてく。

$ gem install i18n -v=0.4.2
$ gem install rubytree
$ gem install coderay

以上。

動かしてみる。

動作確認である。

$ cd /usr/local/redmine
$ ruby script/server start

thinをインストールしたのであれば、同じディレクトリでthin startすれば動く。僕はthin使うつもりしてる。http://0:3000/へアクセス。

こんな感じでオッケー。

redmineをthinで動かしたいのにgemが見つからぬと言われるorz

なぜだー!!

$ which ruby
/usr/bin/ruby
$ which gem
/usr/bin/gem
$ which rails
/usr/bin/rails
$ rails -v
Rails 3.1.1
$ grep RAILS_GEM_VERSION /usr/local/redmine/config/environment.rb 
#RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION
RAILS_GEM_VERSION = '3.1.1' unless defined? RAILS_GEM_VERSION

この状態で、

$ cd /usr/local/redmine
$ thin start
>> Using rails adapter
Missing the Rails 3.1.1 gem. Please `gem install -v=3.1.1 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
ruby /usr/local/redmine/script/server start

thin使わなくても↑これでも同じメッセージがでてくる。

/usr/local/redmine/script/about

も同じくorz

rails3系がだめぽい。ので、2.3.52.3.11をインストール中

公式サイトのバージョン情報にあわせてrackも1.1.1に更新、rakeも0.8.7に、、orz

rake _0.8.7_ db:create

したらnilクラスに'[]'なメソッドねーぞって言われた。


gem uninstall覚えたw

あかん、、、
もういい、rubyをhomebrewでインストールしてやりなおそ、、、(え


=> 無事動いたw

[追記]
動いてなかったwww

  • マルチバイト処理でエラー(ruby1.9系から)
  • homebrewでインストール可能なrubyは1.9系らしい(1.8.7はbuildエラーが出たので断念)

はてダの記事間の空白がウザイ

AdSenceのスペースなのか。いままで付けてなかった人のとこにも勝手に出てくるようになった?

[燻製]コンパクトスモーカー

燻製記というブログをうまそうやなーと眺めていただけだったのだが、とうとうスノーピークのコンパクトスモーカーをamazonで手にいれてしまった。燻製記の書籍版「男の手作り燻製」も。
さて。

[雑記]iOS5からのフォトストリームが便利

写真の同期は別途やっておく必要があるけれども、都度同期させなくてもMacから写真が見れるのでメチャ便利やなー。

10進数を2進数に直すなど。

まずは10進数の1桁1桁を分解する方法を考えてみる。

例えば2011を1桁ずつ分解するには、

2011 を10で割って 余り1
201   を10で割って 余り1
20     を10で割って 余り0
2       を10で割って 余り2

以上を逆順に並べて 2, 0, 1, 1 となる。上の桁から取り出すより下の桁から取りだす方が簡単。


同様に2進数の場合も2で割って余りを逆順に並べてみる。
2進数の場合は、余りの計算を 1 との論理積、2で割るのをビットシフトすれば1桁ずつ取り出せる。perlでやるとこんな感じ。

my $n = 2011;
my @bin = ();
while (0 < $n) {
  unshift @bin, $n & 0b1;
  $n = $n >> 1;
}
print join ',', @bin;

16進数の場合も、0xFとの論理積、4ビットシフトすれば1桁ずつ取り出せる。

my $n = 2011;
my @char = [0..9,'A'..'F'];
my $result = ''
while (0 < $n) {
  $result = $char[$n & 0xF].$result;
  $n = $n >> 4;
}
print join ',', @hex;

16進数は、2進数表現を4桁分をまとめて1文字にすることに等しい。0xFというのは16進数の1桁の最大値2進数の4桁分を1で埋めた数。これと論理積を取ることで16進数下位1桁分の値を取りだすことができる。

同様に8進数は3桁分をまとめて1文字にすることに等しく、2進数3桁分を1で埋めた7と論理積を取ることで8進数下位1桁分の値を取りだすことができる。

0〜9,'A'〜''Z'でやる36進数とかは、剰余を取る方法になってしまうかな。

いじょ。
頭の整理というか、10進数を2進数に変換する方法をぐぐると剰余の方法が書いてあったのでもやっとしてやってみた。


http://vita-home.net/?p=234
perlでやるなら↑こちらのやり方が簡単。

[追記]
手元の環境(OSX 10.7.2)では0x1000000000000000(16桁)と0x10000000000000000(17桁)とを1と論理積とって見たところ、16桁の方は期待通り0になるけど17桁の方は1になった。内部の表現方法が変わってしまう為だと思われる。

テスト駆動にも徐々に慣れてきたかな

自分が作成するライブラリはまずModule::Setupで雛形を作って、簡単なテストを作ってから実装するという流れに乗ってきた感じ。
始めから完璧なテストなんて書けないんだから、今実装しようとしている機能のテストからちょっとずつ書いていく。
完璧なソフトウェアが存在しないというのは理解しているのに、完璧なテストを書かなければならないと思い込んでる人が近くに居るので残念。というのは余談。

テストとは関係ないけど最近面白いなと思ってるのは

  • no strict "refs"してメソッド生やす系
  • 関数リファレンスを引数として受けとる関数をブロック渡しのように使えるように定義
  • 配列やハッシュをTieする

なあたり。

頑張ろ。自分が納得できるものを作っていこう。

サポートに電話してみたけど

修理もしくは交換をしてほしいという旨を伝えたのだが、その程度では交換できないということを言われた。しかもこちらの説明をちゃんと理解できない人だったみたいだったし、無線LAN的な使い方はできないのではないですか?今から調べますとか言われ、時間の無駄でしたありがとうと切った。
なお、電話でランプの状態を聞かれたときに「黄色」と答えたら

サポ「黄色はありませんよ」
僕「何色があるんですか?」
サポ「橙色ならあります」

というやりとりがあった。
なんでわざわざ橙色って言いなおさせたのかわからん。

手順書を見ながら話しているような感じで、何度も同じ説明をしなければいけなかったりして、精神的に疲れてしまった。

電話に向かって怒鳴っていたので(怒鳴ったのは初めて)、電話の後腹筋が痛くなっていて自分の情けなさに笑った。