2008-01-01から1年間の記事一覧

複数の更新系処理を同時にCOMMITする

INDEX PAGE複数の更新系処理を同時にCOMMITする 一つのアクションの中で、複数の更新処理を行う場合があります。 ショッピングサイトでは、買い上げと同時に在庫を減らすと思います。 この時、売上が成功したのに在庫更新処理でエラーが発生すると 在庫の数…

重み付抽選機能を作る

INDEX PAGE重み付抽選機能を作る 登録されたデータを重み付けランダム抽選したいという要件は Webでは意外とあるのではと思うのですが 今回、製作中のWebサイトで投稿された内容を 五段階のユーザーの評価の平均点に対応した頻度で表示する機能を作りました…

オーバーロードは書けるの?

INDEX PAGE オーバーロードは書けるの? Javaでは同じ名称のメソッドで引数の型、個数などを変えられる いわゆるオーバーロードというテクニックが存在します。 Rubyに関しては、オーバーロードという記述方法は存在していないようです。 そもそもスクリプト…

Railsで集計処理を実装

INDEX PAGERailsで集計処理を実装 蓄積したデータの合計や平均などを求めたいなどというとき SQLで「Group By」を使用しますが Railsではこのような場合にはActiveRecord::Calculationsを利用するようです。 http://api.rubyonrails.org/classes/ActiveRecor…

ActiveRecordのModelクラスとエンティティ名の関係を自由に設定したい

INDEX PAGE ActiveRecordのModelクラスとエンティティ名の関係を自由に設定したい RailsではジェネレーターによってModelクラスを自動生成でき テーブル名の複数形のModelクラスがデータベースのエンティティと対応するという 暗黙のルールが存在します。し…

DATE_SELECTをCHAR型のカラムに対応させる

INDEX PAGE DATE_SELECTをCHAR型のカラムに対応させる Rubyには日付形式の入力フォームをサポートする date_selectという機能が存在します。こちら年・月・日を別々のプルダウンで表現してくれて便利な機能です。 ERBファイルの中に下のように書き込んで利用…

(続)Ruby On RailsにLoginEngineのソースを直しました

INDEX PAGE(続)Ruby On RailsにLoginEngineのソースを直しました 実は続きがありました。LoginEngineではWebページにリクエストがあったときに 一旦リクエストのURLをセッションに格納して ログインページに飛ばした後に、 ログインに成功すると、セッション…

バージョンアップ Rails2.0.1→2.1.0

INDEX PAGE バージョンアップ Rails2.0.1→2.1.0 Railsがバージョンアップされたそうです。http://itpro.nikkeibp.co.jp/article/NEWS/20080602/305646/これを当てたら動かなくなるソースとかあるのかなと ちょっとおっかなびっくりしましたが アップデートを…

型(Class)のチェック

INDEX PAGE 型(Class)のチェック Rubyにおいて、というより一般的なスクリプト言語において オブジェクトの型の指定と言うのは基本的に行わないものみたいですね。 メソッドにおいても、引数の型は指定できないので オブジェクトに対してメソッドを実行し…

コンストラクタ

INDEX PAGEコンストラクタJavaでは、クラスをインスタンス化するときの処理をコンストラクターに書きました。 public class Hoge{ public String hogehoge = ""; public Hoge (){ hogehoge = "hogehoge"; } } このような、インスタンスの初期化処理は Rubyで…

ページ切替用プラグインPaginateをインストール

INDEX PAGE ページ切替用プラグインPaginateをインストール 一覧画面で、一ページに大量のデータが表示されると ブラウザ側の表示も重くなるし Webサーバおよびネットワークのリソースを消費するので 大量のけんさく結果が返ってくるページでは ページング機…

半角 全角の変換関数を作る

INDEX PAGE半角 全角の変換関数を作る INDEX PAGERubyはやはり文字列の扱いがとっても便利だなぁと感心します。 今回全角文字を半角文字へ、半角文字を全角文字へという処理を作ったのですが いとも簡単にできてしまいました。 require 'jcode'##アルファベ…

STATICメソット

INDEX PAGESTATICメソットJavaでは public class Hoge{ public static String hogehoge(){ return "hoge"; } } とstaticメソットを定義すると 他のソースから String hoge = Hoge.hogehoge(); と言うように関数を呼び出すことができます。 これとおなじよう…

Syslogで障害通知機能を作る

INDEX PAGE Syslogで障害通知機能を作る Linux/Unixではsyslog機能を利用して 障害通知機能を実装するのが一般的だと思います。 http://ja.wikipedia.org/wiki/Syslog 私もこの方法で障害通知を実装しようと思い ネットで調べていたところ、RubyにはSysLogク…

Class.forNameはどう書くのか

INDEX PAGE Class.forNameはどう書くのか 例えばJavaでJDBCドライバーを利用するとき 各DBごとに実装されたドライバーを利用するに当たって 下のような書き方をします。 Class.forName("oracle.jdbc.driver.OracleDriver"); http://www.site-cooler.com/java…

可逆式暗号化関数を作る

INDEX PAGE可逆式暗号化を作る データベースにデータを格納する時 ログイン画面用のパスワードは 照合さえできればよいので不可逆式の暗号化を採用が良いと思います。 具体的にはStringクラスのcryptを利用するのが良いと思います。 http://www.ruby-lang.or…

Webサーバ起動時のNoMethodError

INDEX PAGEWebサーバ起動時のNoMethodError Webサーバ起動時に下のようなエラーが出ることがあります。 Starting Mongrel listening at 127.0.0.1:4002 Starting Rails with development environment... Exiting c:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.2…

実行環境情報を取得する

INDEX PAGE実行環境情報を取得する 障害通知機能などを利用する場合 自分がどのホストで実行された情報かを送信することが重要ですが 今回はこのための実装を行いました。これはことのほか簡単で Soketクラスを活用することで簡単に実現できました。 require…

HTTPクライアント情報を取得する

INDEX PAGE HTTPクライアント情報を取得する RailsではHTTP Requestオブジェクトが「request」という変数で使用できます。 セキュリティログに出力するために クライアントのIPアドレスやブラウザなどの情報を把握するロジックを実装しました。 Requestに関…

外部のサイトへリンクする

INDEX PAGE 外部のサイトへリンクする データベースに格納した他のサイトへのURLにリンクしたい場合 Viewerで処理する場合には Google', 'http://google.co.jp' %> というように記述することで、外部サイトへのリンクを作成することが出来ます。 また、コン…

RailsにWebサーバ起動起動処理を追加してみました

INDEX PAGERailsにWebサーバ起動起動処理を追加してみました Loggerをラップした独自ログ出力クラスや Syslogに対して障害通知を行うクラスなどを Webサーバ起動時に初期化して、グローバル変数に格納しておきたいと考えていたのですが こちらの実装を行って…

Ruby On RailsにLoginEngineのソースを直しました

INDEX PAGERuby On RailsにLoginEngineのソースを直しました 万事準備OKというわけでブラウザからアクセスを試みたのですが ここでもやっぱり失敗!! ここら辺になってくると、もう怒りしかわいてこない中、 ネットで調査すると、どうもRails2.0では、 過去…

Ruby On RailsにLoginEngineの設定の続き

INDEX PAGERuby On RailsにLoginEngineの設定の続き あとはデータベースの設定と、アプリケーションの設定。 ■データベースの設定 Eclipseを使ってジェネレーターを起動 ここは素直にすすんでくれて一安心。 ■アプリケーションの設定 まずは"/app/controller…

Ruby On RailsにLoginEngineの設定をしました

INDEX PAGERuby On RailsにLoginEngineの設定をしました 書籍やWebのページにはRuby On Rails1.2系の設定例が多かったのですが Ruby On Rails2.0系ではこの方法ではまったく動きませんでした。/config/environment.rb を編集するのは一緒なのですが、1.2系で…

Ruby On RailsにLoginEngineを導入しました。

INDEX PAGERuby On RailsにLoginEngineを導入しました。 Ruby On Railsのバージョンは2.02だったのですが 書籍やWeb上の情報どおりに導入してもまったくうごかず、かなりはまりました(>_<) #######導入バージョン############################## OS Win…