メモ ActionMailerの単体テストを書こうと思い、最初はActionMailer.deliver_???のテストを書いたが次の点が嫌だなと思った。 ・deliver_???は自分で書いたコードではない(???が自分で書いたコードだ) ・???で設定したビューで使用することを設定したイン…
メモ class A def call_other_method other_method1 end def other_method1 end def other_method2 end end describe A, "#call_other_methodを実行した場合" do before(:each) do @a = A.new end it "other_method1を呼ぶこと" do @a.should_receive(:other…
メモ Builderを使ってXMLのレスポンスを生成するには以下のようにrespond_to()を使うのだが・・・ # ビュー(show.xml.builder) xml.diary do xml.title @diary.title end # Diariesコントローラ def show @diary = Diary.find(params[:id]) respond_to do …
メモ ActiveRecordが生成するSQLは通常、/log/development.logなどのログファイルに吐かれるが、これをRailsのコンソールに出力する方法。 実はとても簡単でログの吐き出し先を標準出力に指定するだけ。 ruby script/console # ログの出力先を指定する。以上…
メモ 複数バージョンのRailsをインストールしている場合にRailsスケルトンを作成すると、インストールされている中の最新のバージョンのRailsスケルトンが作成されるが、他のバージョンのRailsスケルトンを作成するには次のようにする。 # rails _version_ a…
メモ render(), redirect_to()は通常、アクションの最後の処理なので、これらのメソッドの後に処理を書くことは稀だと思うが、書けば書いたでちゃんと処理を実行してくれるようだ。 def create @diary = params[:diary] respond_to do |format| if @diary.sa…
メモ Railsのコンソールからコントローラのアクションを呼び出せるとちょっとしたテストに便利そうだなと思っていたらやっぱりできるようだ。 ruby script/console # ①URIとメソッドを指定する。 ENV['REQUEST_URI'] = "/example/index/" ENV['REQUEST_METHO…
メモ Array.prototype.each = function(f){ for(i=0; i < this.length; i++){ f.call(this, this[i]); } };
メモ class User attr_reader :id, :name def initialize(id, name) @id, @name = id, name end end class Array def custom_sort(orders) self.sort do |a, b| Array.compare(a, b, orders) end end def self.compare(a, b, orders) orders.each_with_index…
メモインスタンスメソッドとクラスで使用する定数はprototypeオブジェクトに設定する。 このようにすることで内部的な効率がよくなるため。 var Person = function(name, gender){ this.name = name; this.gender = gender; } Person.prototype.getName = fu…
メモ function bindArguments(f){ var boundArgs = arguments; return function(){ var args = []; for(var i = 1; i < boundArgs.length; i++) args.push(boundArgs[i]); for(var i = 0; i < arguments.length; i++) args.push(arguments[i]); return f.app…
メモ関数オブジェクトのcall()メソッドとapply()メソッドの違いは、後者は第二引数を配列形式で指定する点だけが違うのかと思っていたが引数を受け取った側の引数の扱いも違うようだ。 var f = function(){ return arguments.length; }; f.call(this, [1,2])…
ファイルのアップロードではまったのでメモ。 file = params[:attachment] file.read # => ファイルの中身 file.read # => "" 空の文字列 とするとアップロードしたファイルの中身を取得できるが、このreadは1回しか有効じゃないみたい。 同じファイルに対し…
prototype.jsを少しずつ読み解く。自分用メモ。 var Prototype = { Version: '1.6.0.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.us…
will_paginateをAjax対応させる方法をネットで探していて見つけたxibbarさんの記事 http://d.hatena.ne.jp/xibbar/20080612#1213252219残念ながら私が使っているRailsやwill_paginateのバージョンと噛み合わず動作しなかったため、xibbarさんの記事を参考にA…
+=の場合(予想通りの結果になる) a = "a" b = a b += 'b' p b # => "ab" p a # => "a" a = "a" b = a b << 'b' p b # => "ab" p a # => "ab"
メモ MySQL varchar(n)のカラム長はバイト数ではなく、文字数。 よって、varchar(10)であればマルチバイト文字でも10文字可能される。以下を参考にしました。ありがとうございます。 http://d.hatena.ne.jp/sotarok/20070821/1187707045
メモ Class Foo def self.foo bar end def bar 'bar' end end Foo.foo #=> NameError : undefined local variable or method `bar` for Foo:Class などとクラスメソッドから同クラスのインスタンスメソッドを呼ぶと怒られるが Class Foo def self.foo f = Fo…
メモ CREATE TABLE `tables` ( `flag` char(1) NOT NULL default '0' ); などというテーブルがあったとして、このテーブルに対応するモデルのインスタンスを作るとflagには'0'が入る。 t = Table.new p t.flag #=> '0' これは便利。今までSQLを書くのが面倒…
メモ class Foo def foo 'instance method' end def self.foo 'class method' end end f = Foo.new f.foo #=> 'instance method' Foo.foo #=> 'class method'
モデル(Memo)に検索をするアクション def search @memo = Memo.new(params[:memo]) @memo_pages, @memos = paginate :memos, :per_page => 10, :conditions => ["memo like ?", "%#{params[:memo][:memo]}%"] render :action => 'list' end listビューのpagi…
また、遅いだけならまだしも遅い為か何度やってもActiveRecordのインストールに失敗する。gem install rails Bulk updating Gem source index for: http://gems.rubyforge.org ↓(約40分後) Install required dependency activesupport? [Yn] ↓(約10分後)…
パーマリンク設定の基礎中の基礎に長らくはまっていたがようやく脱出できたのでメモる。1. 何がしたかったか?URLをデフォルトの「example.com/?p=123」ではなく「example.com/about/」のようにしたかった。(=投稿スラッグを使いたかった)2.何をしたか? …
まず一般的なdef メソッド()では書込み・読込みどちらも可能。 class Foo def self.bar(arg = nil) @@arg = arg || @@arg end end #書込み Foo.bar("Hello World!") => "Hello World!" #読込み Foo.bar => "Hello World!" 次にdef メソッド名=()では書込みオ…
【自分が躓いたので忘れぬようメモ】コレクションのフォームエレメントをヘルパーで生成する際モデル名にあたる部分に[]を付ける。 text_field("model_name[]", "column_name") すると以下のHTMLが生成される。 # コレクションのインスタンスがnew_record? =…