ruby

関連keyspaceに気をつけろ

cassandra_objectでは、associationメソッドを使って、belongs_to, has_manyに当たるものを宣言します。 http://github.com/NZKoz/cassandra_object/blob/master/test/fixture_models.rbよくよく見てみると、関連のためのFKのようなカラムの定義がありません…

Rails3.0でcassandra_object

http://github.com/akm/cassandra_object_rails3 に、http://github.com/NZKoz/cassandra_object のtest以下のモデルをrails3.0アプリとして動くようにしました。 ただし、shouldaがまだrails3対応が終わってないみたいなので、 http://github.com/akm/cassa…

BSONでFixnumはサポート外?

mongodbを使っていてこんなエラーが出た。 Cannot serialize Fixnum as a BSON type; it either isn't supported or won't translate to BSONFixnumはBSONの型としてシリアライズできない?んなはずないじゃん。 BSON.serialize({"A" => 123}) #=> #

mongo_mapperのbelongs_toの参照が返すnilはnilじゃない

mongo_mapperを使い始める前に言っておくッ! おれは今やつのスタンドをほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i|…

simply_stored test

$ sudo port selfupdate $ sudo port install couchdb +server $ sudo couchdbでcouchdbをインストール、起動して、http://127.0.0.1:5984/ にアクセスすると、 {"couchdb":"Welcome","version":"0.11.0"} というJSONが返ってくるので、couchdbは無事起動で…

rescueしたい例外を配列で指定

begin raise ArgumentError rescue ArgumentError, NoMethodError puts $!.class.name end 出力結果 ArgumentErrorRubyではこんな風にrescueには複数の例外のクラスを記述できるけど、このrescueしたい例外クラス群を配列で指定したい。まずは、rescue以後を…

禁煙マイルストーンをGoogleカレンダーに登録するスクリプト

Googleカレンダーの「繰り返し」を使ってイベントを登録すると、禁煙してから何ヶ月とか何年とか分からなくなっちゃうので、nヶ月、n年が分かるように予定を登録するスクリプトを書きました。 禁煙100年達成まで登録してみましたw

みんなで使うrvm

rvmって~/.rvmにインストールして使うもんだって思ってたら、別のところに入れることもできるんだって! http://rvm.beginrescueend.com/workflow/rvmrc/あとでUbuntu9.10とかにいれて試してみようっと

ec2-metadata 0.2.0

ec2-metadata の 0.2.0 をリリースしました。 http://github.com/akm/ec2-metadata インストール $ [sudo] gem install ec2-metadata 使い方簡単 このライブラリを使うとEC2のインスタンス上で、そのインスタンスのメタデータにアクセスすることができます。…

eigenclass

id:taigouさんとの話で「特異クラス」という単語が出てきていますが、yuguiさんの説明によるとこんな感じ。 特異クラス 特定のオブジェクトだけ、他の同輩たちには無い特別なメソッドを持たせたいと思ったらどうするだろう。特異メソッドとは要するにそうい…

今度こそinstance_evalとmodule_evalを理解してもらった

ような気がするのでメモ。「instance_evalとmodule_evalを理解」というのは特異メソッド、インスタンスメソッドの違いを理解して、 必要に応じてinstance_evalとmodule_evalを使い分けられる、ということかと思います。なので、ゴールとしては、 block = Pro…

irbで調べるObject, Module, Classの関係

RubyのObject, Module, Classの関係と特異メソッドとインスタンスメソッドの話でメンバーを混乱に陥れたので補足しておきます。 継承関係 まずは、irbでクラスの継承関係を調べてみましょう。 Class.superclass #=> Module Module.superclass #=> Object Obj…

Railsのプラグインを作るのに一番やるべきこと

昨日はテクニック中心の話になっちゃってたけど、一番やるべきことを書いてなかった。RailsやRubyに限った話じゃないけど、何かを拡張するものを作るなら、その対象のソースコードを読むこと。

モジュールの基礎

Railsのプラグインを作る上で、Rubyの基本的なところがやっぱり重要なので、その辺もまとめておきます。 Module#included module Hoge def foo_with_hoge foo_without_hoge + "with HOGE" end end というモジュールがあって、 class Foo include Hoge def fo…

Railsのプラグインを作る基礎テク

developmentモードとproductionモード 今日チームのメンバーに聞かれて気付いたことですが、developmentモードが便利過ぎるからか、リクエストが来るたびにコントローラのクラスがロードされるように勘違いする人もいるみたいです。プラグインを作るときには…

CLOMOプレゼン

落ち込んでいても誰にもいいことないので、頭を切り替えて今日のCLOMOのプレゼンモードに。 http://atnd.org/events/2753 アイキューブさん( http://www.i3-systems.com/ )の仕事で作ったclomoをみんなの前でデモする予定。もう散々動かしているから大丈夫だ…

schema_comments, selectable_attr, selectable_attr_railsアップデート

schema_comments 0.1.2 rake タスクを実行するとdeprecatetionのwarningが出ていたので修正しました。 http://github.com/akm/schema_comments/tree/0.1.2 selectable_attr 0.3.11 警告などのメッセージをSelectableAttr.loggerを使って出力するようにしまし…

nginx + passenger + mysql + postfix

インストールしたコマンドをhistoryから抜粋。 4 sudo apt-get update 5 sudo apt-get upgrade 14 sudo apt-get install mysql-server 17 sudo apt-get install postfix nginx 25 sudo apt-get install build-essential 26 sudo apt-get install ruby ruby-d…

ar_finder_form

0.1.0をリリースしました。 http://github.com/akm/ar_finder_form/tree/0.1.0findやpaginateのオプションを組み立てるフォームを作るためのものです。ずっと前にプラグインとしてだけ作ったものでしたが、仕事で使おうとしたら作りが気に入らなかったので作…

gすげー

~$ sudo gem install g Password: Successfully installed g-1.1.0 1 gem installed Installing ri documentation for g-1.1.0... Installing RDoc documentation for g-1.1.0... ~$ irb -rubygems >> require 'g' => true >> g "Hello, Growl!" => "Hello, …

Roxy

Proxies are a powerful tool in software development, allowing you to transparently provide extra functionality or a slight abstraction to an underlying object. One of the more visible uses of proxies is in ActiveRecord which uses a proxy t…

Caliper

Caliperは、Rubyプロジェクトに非常に簡単な方法でメトリクスを提供する。GitリポジトリにCaliperを指定するだけで、数秒待てばコードがどのような状態か知ることができる。 これは面白いっすね。コードのメトリクスを計算していろんな視点で確認できるって…

RubyStation - Webアプリをデスクトップアプリに

「ブラウザをデスクトップアプリのGUIにする」というアイデア、 試してみませんか? gemでWebアプリを配布することでインストールを簡単にするとWebアプリでもデスクトップアプリのように扱えるってのは前にもあった気がするけど、すごく簡単な仕組みででき…

MagicUserstamp 0.1.1 リリース

先日userstampを作り替えてモデル内でuserstampの定義をしなくてもオッケーって感じにしました。今度はそれをgemで使いたくなったのですが、中身を大きく作り替えちゃったんで、userstampという名前で僕がgem作っちゃまずいかなと思って別の名前にしてみたわ…

GitHubのgem生成終了 => Gemcutter導入

GitHubがEngineYardからRackspaceへ移行した。この移行はかなりスムーズに実施されたのだが、Gemの自動作成機能がなくなった。 ということで、既に公開してあるgemは1年ほど公開してくれるらしいけど、今後GitHubはもうgemを生成してくれないので、僕が公開…

行ってきた

金曜日まで名古屋だったので名古屋Ruby会議01に行ってきました。 RSpecが大量になってきてメンテがキツくなりつつある仕事でCucumber導入しようって決めました。他にも名古屋というか東海って結構たくさんコミュニティがあるんだなーと知りました。スタッフ…

irbのプロンプト

irbのプロンプトを変更するのによく忘れるので、メモしときます。 http://doc.loveruby.net/refm/api/view/library/irb登録済みのプロンプトの種類を調べるには IRB.conf[:PROMPT].keys # => [:CODE, :SIMPLE, :INF_RUBY, :XMP, :NULL, :DEFAULT, :CLASSIC] …

CentOS 5.2 で railsをインストールするまで

入っていたRubyは1.8.5なので、1.8.7をインストールします。RubyGemsも入ってないのでインストール。 http://www.takuto.biz/private/memo/changelog/2008-07-13.html を参考にやります。 $ sudo yum install gcc* compat-gcc* compat-lib* $ sudo yum group…

&block でブロックを受けるメソッドの振る舞い

なんで?常識?理屈が分からない・・ 1.8.7で調べてみたら、どうやら特異メソッドかどうかで振る舞いが違うらしいっす。 irb(main):001:0> def foo(&block) irb(main):002:1> end => nil irb(main):003:0> foo{ puts "A" } => nil irb(main):004:0> irb(main…

JamisBuckさん

But I’m burning out, and I have to drop these before things get worse. Maybe after some period of time I’ll come back to them―I don’t know. But I’m not planning on it. Capistranoの作者の方が、もう無理ってことで、CapistranoやNet::SSHの開発…