tips

update フィルタと validation のコンビネーションでHTTPを制御する。

http://d.hatena.ne.jp/yssk22/20091212/1260617233 に書いたupdateフィルターですが、こんなことをしたくなるかもしれません。 // test/updates/foo.js function(doc, req){ var v = parseInt(req.form.value) if( v > 0 ){ doc.value = v; return [doc, "O…

JSpec

CouchDBアプリのテストのお話。 Integration Test は selenium で全部確認。 Functional Test は CouchDB 自体の test suite と同じように、ブラウザのJavaScriptでXHRを使って view/show/list のテスト。 Unit Test は ... どうすんの? という状態でした。

jquery.validation.js でフォームが崩れないように。

jquery.validation.js を使って長いエラーメッセージを出す場合で、CSSでデザインしたフォームが結構崩れたりしますなぁ。ということで対策検討中。問題は validation.js で出るエラーメッセージが <label for=".." style="display:block">msg</label> という... validaiton.jsをいじって出力を変えてもいい…

jquery.validation.js で正規表現バリデーション

Rails の層を薄く、薄く、薄くしたいので*1、サーバーサイドにバリデーション機能を持たせつつも、jquery.validation.js を採用。それはともかく、jquery.validation.js で <input type ... minlength="2"></input> とかできるのに、 <input type ... regex="[a-z]{1,5}"></input> とかできない?ちゃんとソースまで読んでいないので、adhocに以…

Rails でいらないモジュールをロードしない方法。

environment.rb に config.frameworks -= [ 要らない子たち ] とか書いちゃおう。 [:active_record] とか。

IE 7 と prototype.js 1.6.0

Element.* のメソッドを使う場合は、 $('elm').method(args) とせずに、Element.method($('elm'), args) としないとだめな場合がある。一度呼び出せば2度目以降は前者の形式でもいいようなんだけれど。どないなってんのw

map.resources と map.connect における namespace

Controllerクラスを指定したときに微妙に違いがあるので注意、と。

Mac/Windows 共有あれこれ(2)

結局、昨日の問題はやはりActiveDirectoryのグループポリシーでファイル共有の signing 関連を全部offにしたら解決した。どうもMacのSMBはバージョンが古いのか、実装がへちょっているのか*1 そういうことらしい。 *1: Appleの公式サイトにはSMB signingに対…

Passenger in development で Thread.local 使うとorz

current_user というメソッドがある。これは、現在接続中のユーザーオブジェクトを表す。 def current_user @current_user ||= WjUser.find(session[:wj_current_user_id]) rescue WjUser.anonymous end で WjUser.anonymous は、匿名ユーザーを表す。頻繁に…

passenger + RubyInline (via ImageScience) で exit

これは笑った。 /Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:74:in `exit' /Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:74:in `rootdir' /Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:88:in `directory' …

Mac OS X で Passenger(mod_rails)

とりあえず、Windows 2008 と Vista のVMがメモリを大量に食うので(笑、経費節減。メモリがやすいったって、これ以上(=現在Max 8GB, 内訳、Hyper-V 1GB, 2008 AD(+IIS) 2GB, Vista 2GB, あと3GBしかないよ!) うちのサーバーには乗らないんだもの。以下ログ。

Mac/Windows 共有あれこれ。

全然この日記に関係のない話題だけれども。

IE での開発

とりあえず、prototypeで吸収できるところは吸収するんだけれども、それだけでも動かない場合が多くて、経験的には「Firefoxでは文法エラーにならずに正しく動くけど、IEで正しく動かないケース」が大量に出てました。 XXX は宣言されていませんのようなもの…

IE7Pro でサーバー側のテストをするのは辞めよう。

FireBug Lite++ などの関係でIE7Proにしていたんだけれど。なんか respond_to がおかしいと思って、Controller で次のようにSTDOUTに出してみる puts "=---------------------------" puts "request.format" puts request.format puts "=-------------------…

Ajax.Autocomplete : Enter ボタンを押すとformがsubmitされて残念だ、の場合。

Autocomplete は script.aculo.us の機能なのでRails 2.0でもHelperを使わずにJavaScriptで書けば普通に使えます。 で、せっかくだからtaggingのautocompleteを以下のように入れてみる。tagging は acts_as_taggable_steroid で。

FCKeditor のサーバーブラウザーをRailsで書く。

必要だったので書きました。 fckconfig.js の設定 まずは、fckconfig.js に、サーバーブラウザーのURLを教えます。 FCKConfig.LinkBrowser = true ; FCKConfig.LinkBrowserURL = "/fck/index"; FCKConfig.LinkBrowserWindowWidth = 600; FCKConfig.LinkBrows…

コントローラーを探すパスを変更する

Widgetの実装が、RailsのComponentなわけですが、このComponent機能はRails 2.0でなくなる、という話で、対策中。 ぶっちゃけた話、Componentで実装した理由は、単純にファイルをアーカイブする単位として適切だった、というだけです。で、Widgetのレンダリ…

ActsAsRolePermittable 拡張 (1)

ロールベースに基づいたパーミッション設定が可能なモデルを作っています。 実際の使用イメージ。 class SecureModel < ActiveRecord::Base acts_as_role_permittbale # point 0 end model = SecureModel.create(...) # 基本 # モデルに対して "index" とい…

ActsAsRolePermittable 拡張(4)

Actsの実装コードですが、先に、WjRolePermissionKeys#roles と WjRolePermissionKeys#permit? だけ片付けられそうですね。 # あとで書く で、WjComponentPage#permit_roles やら、permit? やらを acts_as_role_permittable に実装しにいきます。 大抵は、wj…

ActsAsRolePermittable 拡張(3)

テストクラスを書きます。使用例とテーブル設計から察するに、model.role_permissions("index") は WjRolePermissionKey クラスのオブジェクトになるはずですですから、roles=(val), permit?(user)のテストケースが必要でしょう。(anonymous=はActiveRecord…

ActsAsRolePermittable 拡張 (2)

パーミッションを保持するテーブルは次のようになります。 | wj_roles | <<--->> | wj_role_permissionn_keys | --> |acts_as_role_permittable classs|ここで、-->> は 1:N の関係を表現しています。> は N:N掬(hbtm)です。