Index
Index
Ruby On Railsを利用した開発の記録をまとめたIndexページです。
Ruby On Railsのバージョンは2.0.2です。
まだまだ未熟なのでたまに間違ってるかもしれないですが
コメントにて突っ込みいただけると助かります。
また、Ruby仲間も募集中なので是非是非コメントお待ちしています。
■Rails応用テクニック
-ActiveRecord系
複数の更新系処理を同時にCOMMITする
ActiveRecordのModelクラスとエンティティ名の関係を自由に設定した
集計処理を実装
Railsでシステムカラムを用意する
Modelクラスのカラムフィールドアクセス
-ActiveViewer系
DATE_SELECTをCHAR型のカラムに対応させる
リンク用ボタンを作る
外部のサイトへリンクする
改行を表現する
<% %>と<% -%>、<%= %>と<%=h %>
erbの中で別のerbをincludeする
静的なHtmlをインクルードする
ERBを部品化する
link_to、url_forでアンカーリンクを作る
-ActionMailer系
ActionMailerでエラーをハンドリングする
-ActionController系
RailsのControllerをフォルダ分けする
エラー画面、エラー処理
link_to、url_forでアンカーリンクを作る
-その他
RailsにWebサーバ起動処理を追加する
HTTPクライアント情報を取得する
トラックバック機能を作る
RailsでCSV出力処理を実装する
ドメインの異なるサイトでセッションを共有する
戻るボタンの実装方法
require_dependencyとrequireの違い
■Rubyで便利機能を作る
実行環境情報を取得する
Syslogで障害通知機能を作る
可逆式暗号化関数を作る
半角 全角の変換関数を作る
型(Class)のチェック
重み付抽選機能を作る
静的なHtmlをインクルードする
日本語の文字列を部分抽出
■「Javaならこう書くけどRubyでは??」というTIPS
Class.forName
STATICメソッド
コンストラクタ
オーバーロードは書けるの?
ResourceBundleでプロパティーファイルを読み込む
インクリメント(i++)
■Ruby TIPS
’’と””と%Qと%qの違い
nilを処理する
■よくあるエラーTIPS
Webサーバ起動時のNoMethodError
Webサーバ起動時のrequireのエラー
Railsのコントローラークラスでsendというメソッドを定義する
FireFoxでActionController::InvalidAuthenticityToken
モデルクラスのエラー→ERBの原因不明エラー
■バージョンアップ
Rails2.0.1→2.1.0
■プラグイン導入
Ruby On Rails2.0にLoginEngineを導入
ページ切替用プラグインPageNateをインストール
Rails用グラフプラグインGruffの導入
SSL/非SSL混在サイト用Railsプラグインssl_requirementの導入
■あんまり関係ないですが
なかのひと.jp
TopHatenar
Links
Links
よく参考にするサイトを紹介します。
■API
RDoc(英語) http://www.ruby-doc.org/core/
■リファレンス
Rubyリファレンスマニュアル http://www.ruby-lang.org/ja/man/html/Ruby_A5EAA5D5A5A1A5ECA5F3A5B9A5DEA5CBA5E5A5A2A5EB.html
Rubyリファレンスマニュアル(ライブラリ編)http://www.ruby-lang.org/ja/man/html/_C5BAC9D5A5E9A5A4A5D6A5E9A5EA.html
■プラグインの紹介
Rails ify(英語) http://www.railsify.com/
Modelクラスのカラムフィールドアクセス
Modelクラスのカラムフィールドアクセス
Railsも使い込んでくると、コントローラー間で共通の処理を
なるべくModelクラスのほうに定義して共通化を図りたくなります。
その時に一箇所落とし穴があるので共有までに。
例えば画面からhogeという入力欄をつくった場合
class Fugas < ActiveRecord::Base
attr_accessor :hoge
end
とすると、実際にこのFugaテーブルにHogeというカラムが存在しなくても
画面側でうまく処理することができるようになります。
ここで、hogeのカラムが呼ばれた時には
fugaカラムにカッコをつけて返したいという場合
class Fugas < ActiveRecord::Base
attr_accessor :hoge
def hoge
return "(#{fuga})" if fuga
return nil
endend
さらに、hogeの値に「。」を取り付けてfugaカラムに登録したいという場合
class Fugas < ActiveRecord::Base
attr_accessor :hoge
def hoge
return "(#{fuga})" if fuga
return nil
enddef hoge=(val)
fuga = "#{val}." if val
endend
と書くことでうまく行くような気がするのですが
何故かこれがうまく行きません。
色々試した結果
class Fugas < ActiveRecord::Base
attr_accessor :hoge
def hoge
return "(#{fuga})" if fuga
return nil
enddef hoge=(val)
self.fuga = "#{val}." if val
endend
とするとうまく行くことがわかりました。
selfはモデルクラスのメソッドの中で使用すると
他の言語の"this."と同じ役割を果たすようです。
というわけで、最近では気持ち悪いので
class Fugas < ActiveRecord::Base
attr_accessor :hoge
def hoge
return "(#{self.fuga})" if self.fuga
return nil
enddef hoge=(val)
self.fuga = "#{val}." if val
endend
と、本来必要のない取得のほうにも"self."とつけるようにしています。
モデルクラスのエラー→ERBの原因不明エラー
[Ruby On Rails][Ruby]モデルクラスのエラー→ERBの原因不明エラー
INDEX PAGE
モデルクラスのエラー→ERBの原因不明エラー
モデルクラスにデータよりの処理を記述しておくと
コントローラーをまたぐような処理でとても便利なのですが
この処理がしくじったときに、ERBでエラーが表示されてしまいます。
コントローラーでのエラーの場合には
問題箇所としてコントローラーのファイル名と行数が表示されますが
モデルクラスに問題があり
モデルクラスの処理をERBから直接コールしているような場合
ERBの問題としてログメッセージがはかれます。
未だにたまにだまされてドツボにはまります。
nilを処理する
nilを処理する
ソースの中では、変数がnilの時の例外処理を書くことが良くあります。
実は恥ずかしながらRubyの言語仕様を良く知らず
最近まで
↓
というように書いていました。
しかし、Rubyの言語仕様ではif文の引数は
false又はnilの時に偽と判定されるそうです。
つまり、下記のようにかけます。
↓
今まで無駄なソースを書いていたと反省する限りです。
さらに、一緒に仕事をするKさんのソースを見て知ったのですが
変数の値がnilの時にデフォルト値を与えるような式を
"||="という式で表現することができるそうです。
を
こんなテクニックを知らなかったあまり
ソースを汚く書いていたことを反省する今日この頃です。
require_dependencyとrequireの違い
require_dependencyとrequireの違い
色々なソースの中でrequire_dependencyというのがでてくるが
いったいどういう意味なのかよく理解できずに利用していました。
自分でかいたことはほぼないのですが
そろそろまじめに調べてみようと思いソースを読もうとしましたが
Googleで調べたら詳しく説明しているサイトが。
http://www.pistolfly.jp/weblog/2007/06/require-dependency.html
まとめると
■require
・Rubyの機能
・指定したRubyファイルを読み込む
・既に当該ファイルがキャッシュ済みならそちらを読みこむ
■require_dependency
・Ruby On Railsの機能
・指定したRubyファイルを読み込む
・既に当該ファイルがキャッシュされていても再度読み込む
というわけで、ロード対象が更新されているときに
再読込を実施するかどうかが異なっているようです。
開発を行うときにはrequire_dependencyのほうが便利そうですね。
なお、Railsの内部では基本的にはrequire_dependencyが使われているようです。
でも、本番環境とかだとパフォーマンスの劣化につながりそうですよね。。。。。
環境別にどういう振る舞いになるのか設定できるとうれしいのですが。。。。。
SSL/非SSL混在サイト用Railsプラグイン ssl_requirementの導入
[Ruby][Ruby On Rails]SSL/非SSL混在サイト用Railsプラグイン ssl_requirementの導入
SSL/非SSL混在サイト用Railsプラグイン ssl_requirementの導入
SSLと非SSLがチャンポンのサイトを作成する場合
皆様どのように実装してますか?
私はWeb素人ということもあって
当初なんの疑いも無くリンク元のURLで制御していました。
しかし、これをやりはじめると本当にソースが汚い。
何とかすっきりさせられないかと想い
URL_FORを書き換えようかと考えていたのですが
そんな思想のプラグインが見つかりました。
ssl_requirement
http://plugindb.jong.gr.jp/homes/20
こちらのプラグインはアクション単位でSSL/非SSLを設定できるプラグインです。
大まかな導入の流れは
(1)取得&配置
(2)コントローラーにミックスイン
(3)アクションごとに設定
という流れとなります。
下記のページにサンプルソースが掲載されています。
http://dev.rubyonrails.org/svn/rails/plugins/ssl_requirement/README
これで、ERBをすっきり書けそうです。