ruby

rbenvで複数バージョンのRubyを管理するmac os lion

開発マシンに複数のRubyを入れて管理するにはRVMが有名だったけど37signalsのsstephensonという人が作ったrbenvというのが最近人気になってるらしいのでMac OS Lionにインストールしてみました。GitHub - rbenv/rbenv: Groom your app’s Ruby environment イ…

RubyでSQLiteのカラム名の変更をする方法

SQLiteでカラム名の変更をする方法 - Hacking My Way 〜 itogのhack日記ではdbファイルのサイズが大きくなってしまったので、Rubyで別のdbファイルを作ってコピーすることにした。コードは以下の通り。 #!/usr/local/bin/ruby -Ku require 'rubygems' requir…

RubyでTwitter Botを簡単に作れるライブラリを作った

twitter gemを使って、RubyからTwitterを操作する方法を以前のエントリで書きましたが、より手軽にのtwitter gemを使ったTwitter Bot用ライブラリを作ったので公開します。ライブラリ、といっても今のところできるのは以下だけです。 普通にツイート テキス…

sinatraをcgiで動かした

軽量フレームワークのsinatraが熱い。確かに、個人で作ってるサイトではRailsは設定が大変だし、動いてももっさりだし。ということで、さくらのレンタルサーバでsinatraを動作させてみました。 オフィシャルページ(Sinatra)にはcgiで動作させるためのドキュ…

rubyのppの落とし穴

オブジェクトを整形していい感じに表示してくれるpp - Hacking My Way 〜 itogのhack日記と絶賛したばかりのppですが、ちょっと落とし穴があります。それは、整形以外でもpと必ずしも挙動が一致せず、pでは表示できるけど、ppだと期待通りに表示できないオブ…

オブジェクトを整形していい感じに表示してくれるpp

rubyで文字列を出力するにはprint, puts, p など色々ありますが、デバッグで特に便利なのがppです。以下のようなオブジェクトの出力をしてみましょう。 class Hoge def initialize @hoge = 'hoge' @fuga = ['fuga1', 'fuga2', 'fuga3'] @piyo = {:p1=>'piyo1…

RubyでTwitterを操作する方法

RubyからTwitterを操作する方法をまとめました。 はじめに TwitterAPIをwrapしたライブラリは以下の2つがあるようです twitter gem twitter4r どちらがいいかは正直わかりません。パッと見twitter gemのほうがとっつきやすかったので twitter gem を使いまし…

SQLite/Rubyの使い方

RubyでSQLite3を使った際のメモです。これだけ覚えておけばだいたいOK. 用語 レコード・行・ROWなどはごっちゃに使われることもあるので念のため確認しましょう。 テーブル:表のこと。 レコード:データセットのこと。行、ROWと言うこともある。 フィールド…

Ruby/Tkを使うための設定

環境 WindowsXP RubyはOne-Click Ruby Installerでインストール済み Ruby/Tkを使ってみる 下記を実行してウィンドウが表示されればOK require 'tk' Tk.mainloop エラーが出た場合 以下の様なエラーが出た場合の対処方法です。 tk85.dllが見つからなかったた…

配列の初期化

Javaの場合 配列の初期化。Javaの場合、ループでまわして一つずつnewする。 Object[] a = new Object[3]; for (int i=0;i<3;i++) { a[i] = new Object(); } Rubyの場合 こんなクラスの配列を作ることを考える。 class Foo def initialize @num = 0 end def s…

コールバックとしてのブロック

「コールバックとしてのブロック」として知られるRubyのコーディングテクニックがある。 使い方 ブロックを付けたメソッド呼び出し。 f.foo { |i,j| puts i, j } {}で囲まれている部分がブロック。 do...endでも書けるけど、こっちのほうがC/C++,Javaなどの…

Rubyには値渡ししかない

C++な人は値渡ししかない、と聞くと「え、実引数変更できないの?」なんて思っちゃうけど変更できます。 def bar(baz) baz[0] = 5 # 参照先の値を変更 baz = [2,3,4] # 参照を変えるだけ end quux = [1,2,3] bar(quux) print quux # => 523 C++で値渡しと言…

動的型付け

Rubyは動的に型付けを行うので、こんな書き方ができる。 #関数 fooの定義。barの型は気にしない def foo(bar) print bar print "\n" end foo(1) foo([1,2,3]) foo({'baz'=>'Baz', 'quux'=>'Quux'}) 実行結果 1 123 quuxQuuxbazBazprint自体がポリモーフィッ…

Rubyにおける継承(Java/C++との比較)

JavaやC++において継承というと、仕様(インターフェース)の継承がメインだ。java public interface Printable { public void print(); } public class Number implements Printable { int number = 100; public void print() { System.out.println(number); …

Haru free pdf library で日本語出力

クロスプラットフォームのpdf作成ライブラリHaru。以下のようにすればrubyで日本語を出力できる。 pdf.use_jp_fonts pdf.use_jp_encodings font = pdf.get_font('MS-PGothic', '90ms-RKSJ-H') page.set_font_and_size(font, 10.5) 組み込まれているフォント…