DrecomWantedアルファバージョンがリリース
This article was migrated from http://rai
新しいアルファサービスとして、DrecomWant
開発に関わった皆さん、ひとまずお疲れさまです!
This article was migrated from http://rai
This article was migrated from http://rai
新しいアルファサービスとして、DrecomWant
開発に関わった皆さん、ひとまずお疲れさまです!
This article was migrated from http://rai
This article was migrated from http://rai
Document/V
Ruby on Railsでも、ModelとViewの関係を明確化して、Modelの変更をafter_upda
Alexから聞いた話だと、Juggernaut
This article was migrated from http://rai
This article was migrated from http://rai
Ruby on Railsでは、コントローラの挙動をテストするためにFunctional
そこで、ログインした状態でないとアクセスできないようなページのテストを記述するために、Cookieやセッションを使ってテストを記述する必要が出てきます。しかし、こちら(Rails - Functional
Cookieを設定する場合は、@requestを通して以下のように行います。
@request.coポイントは、キー(name)としてシンボルを使わない事です。コントローラ内で参照する側では、シンボルを使って参照しても問題ない(to_sされている)のですが、Cookieを設定するテストコード側では、キーを文字列で指定する必要があります。 'name'を二度指定しなければならず、若干かっこ悪い感じですね。okies['name'] = CGI::Cooki e.new('name', value)
ちなみに、コントローラ内から参照されるcookiesは、ActionCont
This article was migrated from http://rai
This article was migrated from http://rai
IE7でJuggernaut
その結果、IE7では、script、embed、objectなどの特定のDOMエレメントに対して、innerHTMLに値を設定しようとするとエラーになるようです。
1 document.createElement('script').innerHTML = 'alert(1)'; // エラー!
いまのところ、以下のように別なDOMエレメントのinnerHTMLにHTMLとして 埋め込む分には大丈夫なようです。
1 var span = document.createElement('span'); 2 span.innerHTML = '<script type="text/javas cript">alert(1)</script>'; 3 document.body.appendChil d(span);
<a id="BlogEntryE xtend"></a>
<span id="extended-t ext" /><p>
ともあれ、IE7に対応するようにJuggernaut
1 ---- code of public/javascripts/juggern aut.js ---- 2 3 _appendIEC ommandHand ler: function() { 4 var scriptbox = document.createElem ent('div'); 5 scriptbox. style.display = 'none'; 6 scriptbox. innerHTML = [ 7 '<script language="VBScript">', 8 ' on error resume next', 9 ' Sub juggernaut _flash_FSC ommand(ByVal command, ByVal args)', 10 ' call myFlash_Do FSCommand(command, args)', 11 ' end sub', 12 '</script>'].join("\n"); 13 document.body.appendChil d(scriptbox); 14 }, 15 16 _appendFla shObject: function() { 17 var host = Juggernaut .host; 18 var port = Juggernaut .port; 19 var data = Juggernaut .data; 20 var flashbox = document.createElem ent('div'); 21 flashbox.style.display = 'none'; 22 flashbox.innerHTML = [ 23 '<object classid="clsid:D27C DB6E-AE6D- 11cf-96B8- 4445535400 00" ', 24 'codebase="http://dow nload.macr omedia.com /pub/shock wave/cabs/ ', 25 'flash/swfl ash.cab#version=5,0,0,0" id="juggernaut _flash">', 26 '<param name="movie" value="/juggernau t.swf?host=', host, 27 '&port=', port, '&juggernaut _data=', data, '">', 28 '<param name="quality" value="high">', 29 '<embed src="/juggernau t.swf?host=', host, '&port=', port, 30 '&juggernaut _data=', data + '" quality="high" ', 31 'name="juggernaut _flash" swLiveConn ect="true" ', 32 'type="applicatio n/x-shockw ave-flash" ', 33 'pluginspag e="http://www .macromedi a.com/go/g etflashpla yer">', 34 '</embed>'].join(''); 35 document.body.appendChil d(flashbox); 36 },
作者のAlex氏にはパッチを送っておきました。
This article was migrated from http://rai
This article was migrated from http://rai
yuguiさんのhas_one :throughはABD的にRailsを使うのには欠かせない存在です。 今回は、オリジナルのhas_one :throughを拡張して、Unsaved objectも扱えるようにしてみました。
class ActiveReco上記のコードをオリジナルのコードに追加すると、Unsaved objectに対しても、アソシエーションを参照することができるようになります。rd::Associ ations::Ha sOneThroug hAssociati on < ActiveRecord::Associations::HasOneAssociation private 〜 略 〜 def load_target if !loaded? && @owner.new_record? table_name = @reflection.through_reflection.table_name @target = @owner.send(table_name.singularize).send(@reflection.name) end super end end
member = Member.new member.build_membership(:group => Group.new) member.groupというわけで、yuguiさんお願いしますー。
This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/99
This article was migrated from http://rai
ブログの記事をエントリーと呼ぶかアーティクルと呼ぶかというお話。
Railsで書けばこんな感じになります。
class Blog < ActiveRecord::Base has_many :entries has_many :articles, :through => :entries endエントリーは「記入する」というアクティビティで、ブログと記事(Article)はリソースなので、ABD的に考えると何の呵責もなくすっきりと理解できますね。すばらしい!
This article was migrated from http://rai
This article was migrated from http://rai
すでにあるかもしれないですが、gemのサブコマンド補完関数です。
_gem () {
`gem help commands | grep '^ *' | sed 's/^ *//' | sed 's/ *.*//' | sed 's/^/compadd /'`
}
compdef _gem gem
時間ができたら zsh はもっと詳しく調べてみたいですね。
This article was migrated from http://rai
This article was migrated from http://rai
ZenTestは、RubyのTDD(テスト駆動開発)フレームワークの一つです。 TDDを行うのに便利な機能がいろいろあるのですが、特にautotestが気に入っています。
autotestをRAILS_ROOT
以前紹介した、テスト結果の色付けをしてくれる「RedGreen」と併用すると、さらに気分良くTDDを行う事ができます。 どうしてもテストコードを書くのが面倒、という方にも是非お勧めしたい一品です。
インストールもGemからできるので簡単です。
# gem install ZenTestあとは、RAILS_ROOT
$ autotestとやればOKです。コード編集用と テスト結果表示用にTerminalを二つ並べておくと見やすいです。
This article was migrated from http://rai
This article was migrated from http://rai
「Model同士の関係をグラフで表示するプラグイン」に、かずひこさんのコントリビューションをマージしました。
新たに、モデル同士の関係図を出力する rake タスクが加わりました。以下のようにして使用します。
$ rake model_grapFORMATの指定は省略可能です。h [FORMAT=jpg ]
プラグインリポジトリはこちらになります。ご自由にご利用ください。
http://svnバージョン番号を振っていなかったので、もともとのバージョンを0.1として、今回のリリースはバージョン0.2という事にしておきます。.labs.drec om.jp/rail s/plugins/ trunk/mode l_graph/
かずひこさん、どうもありがとうございますー。
This article was migrated from http://rai
This article was migrated from http://rai
度々忘れがちなので備忘録。
ActiveReco
class Group < ActiveRecord::Base has_many :members endこのとき、コレクションに対して以下のようにARオブジェクトを追加すると、
group.members << Member.new(params[:member])group.new_record?が真の場合はMemberはそのままコレクションに追加され、DBは変化しませんが、group.new_record?が偽の場合は、Memberは直ちにsaveされ、DBに格納されます。
group.new_record?が偽の場合にDBを変更せずにMemberをコレクションに追加したい場合は、以下のようにbuildメソッドを利用します。
group.members.build(params[:member])余談ですが、リソース系のオブジェクトはcreateよりもnewを使う事が多いですね。 Ajaxでちょっとずつリソースを作っていって、完成したところでsaveでDBに格納。 逆にActivity系のオブジェクトは、createで作成と同時にDBに格納する感じです。
This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/94