はじめてのRails

最近、勉強もかねて、家で使えるようにと家計簿アプリを作っています。Railsの本は読んでたんですけど、やっぱ目的を持って作ると全然違いますね。
試行錯誤の毎日で、全然進みませんがとっても面白いです。デザインのセンスが全くない上に、テーブルばっか使ってしまうので、CSSとかもいろいろ勉強中です。

さくらサーバにrubygems

そろそろ、さくらのサーバでrailsを動かしてみようかなと思い、さくらのサーバにsqliteと、rubygemsを入れました。ものぐさだったので、rubyはサーバに入っているものを使って、gemを/home/user/local以下にインストールしました。
次にrailsをインストールしたところまではよかったのですが、sqlite3-rubyをインストールしようと

gem install sqlite3-ruby

を実行すると

gem Operation not permitted

というようなエラーが。
$GEM_HOME/sqlite3-ruby-1.2.1/ext/sqlite3_api/Makefileをみると、なぜか

INSTALL = /usr/bin/install -c -o root -g wheel

になっており、rootでインストールをしようとして、パーミッションエラーが発生してるみたいでした。拡張ライブラリはだめなのかなと思い、Hpricotも試してみましたが、同様のエラーが。

調べると、Rubyの拡張ライブラリでは、mkmfというライブラリでMakefileが作成されている事がわかりました。それで手元のWindowsの環境のmkmf.rbを見ると、以下のような該当と思われる行が1088行付近にありました。

INSTALL = #{config_string('INSTALL') || '@$(RUBY) -run -e install -- -vp'}

それで、次は66行目付近のconfig_stringを見ると

def config_string(key, config = CONFIG)
  s = config[key] and !s.empty? and block_given? ? yield(s) : s
end

というわけで、CONFIGにたどり着いたので、grepをかけてみると、c:/ruby/lib/ruby/1.8/i386-mswin32/rbconfig.rbが該当し、

CONFIG["INSTALL"] = "copy > nul"

になっていました。そこでサーバで以下を試すと

% ruby -rrbconfig -e "puts Config::CONFIG['install']"
/usr/bin/install -c -o root -g wheel

Makefileと同じ内容が。どうしようかと思ったんですが、あきらめてrubyをソースからインストールして、再度gemをインストールすると、sqlite3-rubyもHpricotも無事にインストールする事ができました。


とりあえず、少し勉強になったので、よしという事にします。

Amazonに大阪府立図書館の蔵書検索リンクを追加するGreasemonkeyスクリプト

http://blog.champierre.com/archives/446でやられているので、乗り遅れてる気がしますが、僕も大阪府立図書館バージョンを作ってみました。って言うほどでもありませんが。
amazonosakalibrarylinky.user.js
ソースは以下のようになります。

// ==UserScript==
// @name          Amazon Osaka Library Linkey
// @namespace     http://d.hatena.ne.jp/treeham/
// @description	  Osaka Library Lookup from Amazon book listings.
// @include       http://*.amazon.*
// ==/UserScript==

(function() {
    var elem = document.getElementById('ASIN');
    if (elem) {
        var asin = elem.value;
        var header = document.evaluate("//b[@class='sans']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
        if (header) {
            var spl_link = document.createElement('a');
            spl_link.setAttribute('href', 'http://p-opac.library.pref.osaka.jp/OSPLIB/webopac/kensaku/kensakuKekka.jsp?code_genre1=2&code_value1=' + asin);
            spl_link.setAttribute('title', 'To Osaka Library');
            spl_link.innerHTML = '</br><span style=\"font-size:90%; background-color:#ffffcc;\">&#187; 大阪府立図書館で蔵書検索</span>';
            header.parentNode.insertBefore(spl_link, header.nextSibling);
        }
    }
})();

最近、図書館の便利さが気づいてきましたが、これで図書館ライフがますます便利になりそうです。
ありがとうございます。

Ruby勉強会@関西-14に行ってきた

すごく遅くなりましたが、Ruby勉強会@関西-14にいってきました。2回目です。
Ruby 実行環境の話は、色々と他言語との絡みもあって、興味深かったです。JRubyは試してみたいと思います。GroovyとかRhinoみたいなポジションになる可能性があるのかな?あと、RubyCLRを会社のマシンに入れようと思ったんですが、どうも.net2.0じゃないと無理っぽい気が・・・。今、使っているのは1.2だったような。
Plaggerの話は、非常に面白かったです。笑いもあったし。Perlも勉強したいけど、Rubyの方がいいしなんて思ってたら、Rubyでもオッケーなんすね。
とりあえずPraggerにも期待という事で。
あと、かずひこさんの話にあった「最初は知らなくても、やっているうちに知識は増える」っつうのは、おおっ!と思いました。
懇親会では、id:ha-tanさんや、id:cuzicさんにしゃべってもらってうれしかったです。
個人的な話ですが、来月に子供が生まれる予定なのであまり無茶はできませんが、これからも参加していきたいと思います。

MigemizeExplorerが見つかった!

結構前から、MigemizeExplorerはいい!って、見かけていたので軽く探していたんですが、公開終了という事でそのうち見つかるかなってあきらめてました。でも、Migemize Explorer が欲しい! - n246の日記に書いてあるのを見つけて、ついにMigemizeExplorerをいれる事ができました。
Explorerで日本語検索できるし、部分検索できるしでかなり便利です。ありがとうございます!


あと、kbdaccも入れてるんですけど、こういうアプリって、毎回Windowsを起動する度に実行しないとだめで、でも実行するの忘れてたりとかして、めんどくせーとかって思ってました。でも、こんな起動時に実行したいアプリは、ショートカットを作って

C:\Documents and Settings\user\スタート メニュー\プログラム\スタートアップ

に、置いておくとWindowsの起動時に自動実行されます。
これ有名なんですかね?有名なんでしょうね、多分。もっと早くから知っとけばよかった!

さくらサーバにSubversion

さくらサーバにSubversionを入れました。http://weekbuild.sakura.ne.jp/trac/wiki/TracDoc/SakuraInternethttp://nyarla.net/blog/subversion1を参考にしました。Tracを入れようとしたのですが、Subversionまでしか入れてません。弱いです。

インストールにも時間がかかったんですが、Windowsからssh+svnで接続するのにも手間取りました。Windowsに普通のSubversion(Tortoiseじゃないやつ)を入れてたんですが、つながるかなと試してみると、

svn: トンネルを作成できません: 指定されたファイルが見つかりません。

のようなメッセージが出て、どうもつなぎ方がわかりません。
今回はいったん諦めて、TortoiseSVNをインストールして、TortoiseSVNから接続する事に。この場合は、puttyと一緒に入っているpageant.exeを起動しておきます。そして、鍵の一覧でputtygenで作った鍵を追加します。それで、TortoiseSVNリポジトリブラウザのURLに

svn+ssh://ユーザ名@ユーザ名.sakura.ne.jp/home/ユーザ名/repos

のように入力すれば、やっとつながりました。


追記: 3/29のSubversionへのアクセス方法で解決しました。

レンタルサーバ

最近はレンタルサーバがはやっているので、さくらインターネットレンタルサーバに申し込みました。
これで、SubversionとかPlaggerとかいれて、ごにょごにょしてって感じで、夢だけは広がりますねー。