カテゴリーアーカイブ: Ruby
本当にありがとう。最後の RubyKaigi2011 #rubykaigi
passengerもrvmで動かすOSのrubyに依存しない環境づくり

OSに最初からついているrubyのバージョンやパッケージのバージョンとかを見てみると、
[@MacBook-Air]$ /usr/bin/ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
とか表示されて、Rails3使ってる人にとっては、だいぶ残念な感じ。
かといって、passengerが1.8系で既に動いていたり、1.8系でしか稼働しないコードやgemを使っていたりする場合、OSのrubyバージョンを勝手に変更するわけにもいかない人は多いんじゃないだろうか。
でも、rubyは1.9でrailsは3なんだよ。って人は、なんでもかんでもrvmでやること推奨する。
そして、rvmにインストールした1.9系のrubyを使ってpassengerを稼働さましょう。
いまどきのRubyとRailsの学び方
code school という学習サイトがあります。現在は、Ruby on Railsに特化したコンテンツがありますが、確認する限りでは、jQueryやHTML5 & CSS3のコンテンツが近いうちに公開される予定です。
→ «いまどきのRubyとRailsの学び方»" class="more-link">続きを読む «いまどきのRubyとRailsの学び方»
herokuでruby 1.9.2を使う方法
http://heroku.com/はRails使いには便利なホスティングサービス。
1つのコマンドだけでRailsのデプロイを自動でしてくれてすぐに動作する。
小さいアプリケーションならば無料で動かせるので、簡単な実験にもよく使われている。
rails3になってRubyも1.9系でしょ。という流れなので、普通に使っていたのだけど、
herokuのデフォルトはree-1.8.7ということで、エラー発生して気づいた。
mri-1.9.2を使う方法をメモ。
→ «herokuでruby 1.9.2を使う方法»" class="more-link">続きを読む «herokuでruby 1.9.2を使う方法»
そうだ、rails3でfactory_girlをつかおう!
Fixturesを利用してテストを書いていくと、リレーションの定義がファイルをまたいでわかりづらくなったり、同じようなデータなのだけど、少しだけ違うデータが増えていったり、とにかく大変になる。
→ «そうだ、rails3でfactory_girlをつかおう!»" class="more-link">続きを読む «そうだ、rails3でfactory_girlをつかおう!»
emacsでruby開発環境を整える
emacs の elisp が ruby のソースコードに一通り含まれているらしいので確認する。
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2 $ tar jxvf ruby-1.9.2-p180.tar.bz2 $ ls -l ruby-1.9.2-p180/misc total 216 -rw-r--r-- 1 hirocaster staff 369 10 2 2009 README -rw-r--r-- 1 hirocaster staff 15271 10 2 2009 inf-ruby.el -rw-r--r-- 1 hirocaster staff 2757 10 2 2009 rdoc-mode.el -rw-r--r-- 1 hirocaster staff 7094 10 2 2009 ruby-electric.el -rw-r--r-- 1 hirocaster staff 55876 1 16 21:35 ruby-mode.el -rw-r--r-- 1 hirocaster staff 2246 5 25 2010 ruby-style.el -rw-r--r-- 1 hirocaster staff 4481 10 2 2009 rubydb2x.el -rw-r--r-- 1 hirocaster staff 4984 10 2 2009 rubydb3x.el
emacsのバージョンは 23.2.1 で、ruby-modeは最初から入っていた。
ruby-electric.el
ruby-electric.el は中括弧や対応する括弧を自動補完してくれるようだ。
$ cp ruby-1.9.2-p180/misc/ruby-electric.el ~/.emacs.d/elisp/
その後、emacsを立ち上げて、M-x byte-compile-file で、 ~/.emacs.d/elisp/ruby-electric.el を指定する。
~/.emacs.d/elisp/ruby-electric.elc というファイルが作成されていることを確認
.emacs に以下を追加
;; ruby-electric.el (require 'ruby-electric) (add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)))
emacswikiから以下はインストールした。
ruby-block.el
;; ruby-block.el (require 'ruby-block) (ruby-block-mode t) (setq ruby-block-highlight-toggle t)
flymake-ruby
syntax error を検出してくれるflymakeにrubyもつかえるようなので、設定を追加した。
;; flymake-ruby
(defun flymake-ruby-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "ruby" (list "-c" local-file))))
(push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
(push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)
(push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3) flymake-err-line-patterns)
(add-hook 'ruby-mode-hook
'(lambda ()
;; Don't want flymake mode for ruby regions in rhtml files and also on read only files
(if (and (not (null buffer-file-name)) (file-writable-p buffer-file-name))
(flymake-mode t))
))
素直にTextMateやRedcarつかうのが良いのかもしれないが、emacsでやる。
daemontoolsで勝手にプロセスが終了していたという悲しい状況を防ぐ
Ruby1.9スクリプト(Twitterbot)をLinuxデーモン化する方法
にて、Rubyスクリプトをデーモン化して、簡単に自動起動と停止できるようにしました。
ですが、何らかの影響で、Rubyスクリプトが終了してしまった場合にスクリプトが落ちたままになってしまいます。これは精神衛生上非常に良くない。
今回は、daemontoolsを使用して、プロセスが終了しても自動的に立ち上げ直す状態をつくります。
達人プログラマーに学ぶ リファクタリング
達人プログラマー 第6章 コーディング段階 p.188
ガーデニングのメタファーはソフトウェア開発の現実にかなり近いものです。あるルーチンが大きくなりすぎたり、色々なことを実現しようとしすぎている場合、2つに株分けする必要があるのです。また、計画通りうまくいかないものは雑草を抜いたり剪定してやらないといけないのです。
こういったコード記述のやり直し、再作業、再設計を総称して「リファクタリング」と呼びます。
![]() |
アンドリュー ハント¥ 3,990
![]() |
→ «達人プログラマーに学ぶ リファクタリング»" class="more-link">続きを読む «達人プログラマーに学ぶ リファクタリング»
Ruby1.9スクリプト(Twitterbot)をLinuxデーモン化する方法
Ruby 1.9系からRubyスクリプトをデーモン化するのが1行できるようになりました。
- 3分でわかる RubyでつぶやくTwitter botを拡張してTwitterbotをデーモン化します。
Ruby Enterprise EditionによってRedmineのメモリ使用量を42%節約
昨日インストールしたRedmineですが、格安VPSで動かすにはちとメモリを使いすぎる。
Ruby Enterprise Editionでpassengerを動かして、45%ものメモリを節約することに成功した。
その一部始終を語ろう。




