Railsで開発の際に忘れがちなTipsをまとめていきます。備忘録ですが、もっとよいというやり方があればどんどんコメントしてください。2007年6月15日金曜日テンプレートディレクトリをパラメーターで変更コントローラ内で定義される、あるメソッドによってテンプレートディレクトリを変更します。ユーザーの属性(性別、住地域等)によって、表示するテンプレートを切り替えたいというような場合です。今回は、携帯用に表示を切り替えるライブラリのmobile_on_railsをベースにライブラリを作成しました。※どうも、もう少しよいやり方があるとは思ったのですが、時間の制約上上述のライブラリを参考にさせていただきました。それでは性別を、元にテンプレートディレクトリを切り替えるライブラリを作成します。男性の場合はviews/man、女性の場合はviews/woman以下にコントローラ名という配置にします。mypage,openコントローラがあるケースではwoman/mypagewoman/opneman/mypageman/openという配置になります。ライブラリはアプリケーションルート以下のlibディレクトリに配置します。endend---これで、書き換えの準備は整いました。この状態でtagnameをコントローラ内で定義すると、ActionViewクラスが自動的にファイルの出力前に、テンプレートパスを書き換えてくれます。各コントローラ内のbefore_filterなどで、性別を判定しグローバル変数に定義します。endこれで、準備は完了です。この状態で、enviroment.rbにライブラリを設定し、再起動を行ってください。Rails:独自ライブラリ2007年5月30日水曜日バックグラウンドでコマンド実行railsに限らず、バックグラウンドでコマンドを実行し、その結果を受け取るようなWebプログラムはよくあると思います。perlやphpではsystem関数を利用してコマンド実行を行いますが、rubyではopenを使用します。今回はバックグラウンドであるディレクトリのファイルの一覧をLinuxのコマンド"ls"で取得するためのプログラムの実装例です。'ディレクトリの内容を表示します。list---------------注意しなくてはいけないのがopenする際に、ブロックを与えないとバックグラウンドで実行したプロセスへのpipeがクローズされないまま、ゾンビになってしまうのです。/home/hogehoge"のプロセスがゾンビ状態となってしまうのです。Ruby:コマンドライン2007年5月26日土曜日ObserveFieldを使ってビュー表示の切り替えリストタグやラジオボタンなどフォームの入力値によって表示内容を切り替えたいと思います。今回はselectタグ(1)の選択時に別のselectタグ(2)の内容を変化させます。1.Railsに標準で同胞されているprototype.jsをインクルードします。2.formタグのid,nameを指定します。-%>※コントローラ、アクションはそれぞれご自信の環境に合わせて変更してください。更新するrhtmlの中の指定したエリアです。falseendこのメソッドの中で分岐条件を書いてviewを読み出すようにしてください。四捨五入エクセルのRoundUP関数など、数値データの四捨五入を行う方法です。Rubyにはエクセルのように何桁を切り捨てたり、切り上げたりする機能がないので予め切り捨てたい桁数分を少数以下にしておきます。12,229を12,000などにしたい場合はいったん12229を1000で割っておきます。小数点以下を丸めて最後に1000をかけてもとに戻せばroundupを表現できます。Ruby:数値関連2007年4月19日木曜日メール受信時の環境変数RAILS_ENVの設定サーバー側でメールを受信した際にアプリケーションを実行するプログラムを作っていると仮定します。※問合せ管理用のWebシステムがあり、その中の一つのインターフェイスとして当プログラムが存在しているような場合です。その際に、webアプリケーションではwebrick起動の際にdevelopmentもしくはproductionをRAILS_ENVに設定しますが、メール受信の際にはwebrickを介さずにscript/runnerでプログラムを起動するため、メールを受信したユーザーの環境変数でプログラムが実行されます。通常はRAILS_ENVの環境変数が設定されていないので、アプリケーションを起動する際に環境変数を設定しなければなりません。いかはpostfixでの環境変数の設定方法を例にした記述方法です。ユーザー自身のホームディレクトリに移動し".forward"ファイルを編集します。&&で環境変数を設定することによりプログラムがproductionで実行されます。qmailの場合は.qmailファイルに書くだけでよいと思います。※試したことはありませんが、おそらくそんなに変わらないでしょう。Japan株式会社セブンエージェントは、事業とシステムの融合を果たすべく、あらゆる事業領域とITシステムに精通したコンサルタントが、「事業を支え発展させるITシステム」の企画・構築を行っております。