Ruby は純粋なオブジェクト指向言語と言われています。全てがオブジェクトで表現されていて、オブジェクトにはメソッドがあり、プロパティがあります。
true や false、さらには nil(他の言語のnullに相当) もオブジェクトです。
オブジェクトであるからにはメソッドを持っています。 そう、何もデータがないことを表すための nil ですらメソッドを持っていて驚きました。 以下に一部のメソッドを示します
| メソッド名 | 機能 |
|---|---|
| nil? | 常にtrueを返す |
| to_a | 空の配列を返す |
| to_s | 空文字を返す |
| to_i | 0を返す |
<参考>Rubyリファレンスマニュアル
空文字 とか 0 とか null をそれぞれ別のものとして扱いつつも、比較するときに手間をかけさせないRubyの心遣いがにくいですね。
以下のパッケージを aptitude でインストール
ruby rubygems rails ※rubyのバージョンを指定するなら ruby1.8 or ruby1.9
以下の場所から最新版をダウンロードします。
http://rubyforge.org/projects/rubygems
$ tar zxvf rubygems-1.1.0.tgz $ cd rubygems-1.1.0 $ sudo ruby setup.rb
vim-rubyをインストールする
$ sudo gem install vim-ruby --remote $ sudo /var/lib/gems/1.8/bin/vim-ruby-install.rb ※場所は環境によって変わるかも?
インストール先を聞かれます。
Possible Vim installation directories:
1) /home/USERNAME/.vim
2) /usr/share/vim/vimfiles
とりあえず自分の環境にインストールしたかったので、1を選択
.vimrc に以下を追加
filetype indent on filetype plugin on
ruby用の設定を ruby.vim に書く
$ vim ~/.vim/ftplugin/ruby.vim setlocal ts=2 sw=2 sts=2
他にもっといい場所があるかも知れない…
いつもどこかからコピペするので、あらかじめここに貼りつけておく
#!/usr/bin/ruby print "Content-type:text/html;charset=UTF-8\n\n"
ruby には i++ は無いので i += 1 を使う
Apacheをフロントサーバにし、特定ディレクトリにアクセスがあった場合に バックエンドのMongrelに処理を渡す設定を行った際のメモ。
$sudo a2enmod proxy $sudo a2enmod proxy_http
$sudo vim /etc/apache2/sites-available/www # 以下を追加
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# リバース・プロキシの設定
ProxyPass /wikir/ http://localhost:8000/
ProxyPassReverse /wikir/ http://localhost:8000/
ProxyPreserveHost on
設定を有効にする
$sudo /etc/init.d/apache2 force-reload
以下のコマンドで調べられる
$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 0.9.5 (0.9.5)
- RUBY VERSION: 1.8.5 (2006-08-25) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://gems.rubyforge.org
後でちゃんとしたヘルパを作ろうと思いますが、とりあえずメモ。
<% self.instance_variables.each{|v| p v + ':' + instance_variable_get(v).to_s } %>