紳士なブログ

紳士すぎてすみません

findメソッドに:joinsオプション指定したときの:readonlyオプションについて

findメソッドに:joins指定したときのreadonlyオプションについて なんとなくは理解にとどまっていたので、今更ながら調べてみる。 activerecord-2.3.12/lib/active_record/base.rb 611 def find(*args) 612 options = args.extract_options! 613 validate_fi…

読書記録: 『心を整える』

心を整えようと思って読んでみたのでまとめ。 ところどころにあるサッカーの話も面白かった。ドイツいいなー 心を整える。 勝利をたぐり寄せるための56の習慣作者: 長谷部誠出版社/メーカー: 幻冬舎発売日: 2011/03/17メディア: 単行本(ソフトカバー)購入:…

読書記録: 『7つの習慣』

『7つの習慣』についてのまとめ。 土台となる前半についてまとめてみた。 7つの習慣作者: スティーブン・R.コヴィー,Stephen R. Covey,ジェームス・J.スキナー,川西茂出版社/メーカー: キングベアー出版発売日: 2011/06メディア: 単行本購入: 1人 クリック: …

IntegrationTestにリファラをセットする方法

フレームワークはTest:Unit。 FunctionalTestは既知だったけどIntegrationTestは無知だった。 FunctionalTest @request.env['HTTP_REFERER'] = '/donuts/new' post :create, :donuts => { ... } assert_redirected_to 'donuts/new' IntegrationTest post :cr…

読書記録: 『先読み力で人を動かす』

今さらだけど読んでみて、学ぶことが多かったのでメモ。 「先読み力」で人を動かす ~リーダーのためのプロアクティブ・マネジメント~作者: 村中剛志出版社/メーカー: 日本実業出版社発売日: 2008/03/27メディア: 単行本(ソフトカバー)購入: 11人 クリック:…

timestampsの自動更新をやめてみる

Railsでのtimestampsの自動更新の正確な挙動を知りたくなったので確認してみた。 activerecord-2.3.12/lib/active_record/timestamp.rb module ActiveRecord module Timestamp def self.included(base) #:nodoc: base.alias_method_chain :create, :timestam…

ActionViewのselectメソッドのソースコード読んでみた

普段Ruby on Railsを利用しているのですが、その中にあるActionViewについて実はあまりよくわかっていなかったので、ソースコードを読んでみました。Railsのバージョンは少し古くて2.3.12ですm(_ _)mselectメソッドの引数は、method, choices, options, html…

『グーグル ネット覇者の真実』読んでます

4月に入ってから『グーグル ネット覇者の真実』をちびちび読んでいます。 グーグル ネット覇者の真実 追われる立場から追う立場へ作者: スティーブン・レヴィ,仲達志,池村千秋出版社/メーカー: 阪急コミュニケーションズ発売日: 2011/12/16メディア: 単行本…

Vimで意外に知らなかった10つのこと

vim

すごくすごくすごく今さらですが、vimtutorやってみました。 とてもよくまとまっていてびっくりした。基本的な内容だったけど、自己流でやっていたせいか 意外と知らなかったことがあったのでまとめてみます。今まで無駄なことしてたなと少し反省(-_-;) % vi…

RailsでテンプレートエンジンのSlimを使ってみる

Rails環境でテンプレートエンジンのSlimを使ってみる。Slim -A Fsst, Lightweight Templating Engine for Ruby前々から気になってはいたんだけど、昨日のRuby会議で@hsbtさんも利用してたので早速使ってみることに。ちなみに環境はこんな感じ。 Ruby 2.0.0-p…

Rails4.0導入してみた

まだ正式リリースされていないので4.0.0.beta1です。 ➜ ~ gem install rails --version=4.0.0.beta1 Fetching: i18n-0.6.4.gem (100%) Successfully installed i18n-0.6.4 Fetching: multi_json-1.7.0.gem (100%) Successfully installed multi_json-1.7.0 F…

Ruby2.0導入してみた

まずはHomebrewをupdate。 ➜ ~ brew update error: The following untracked working tree files would be overwritten by merge: Library/Formula/cmigemo.rb Library/Formula/pbrt.rb Please move or remove them before you can merge. Aborting Error: F…

HomebrewでSpiderMonkeyをインストール

今更ながらコンソールでJavaScriptを実行するために。 以前やろうとしたときはたぶんHomebrewに慣れてなかったから挫折したんだろうなー。 ➜ ~ brew install spidermonkey ==> Installing spidermonkey dependency: nspr ==> Downloading http://ftp.mozilla…

東京Ruby会議10に行ってきた

昨日と今日、東京Ruby会議という名の千葉Ruby会議に行ってきました。 東京Ruby会議10 #tkrk10 - Regional RubyKaigi 会期:2013/01/13(日)〜14(祝・月) 自分には上手いことあれこれコメントできないので、 聴講したプレゼンの資料とかまとめておきたいと思い…

classキーワードとclass_evalメソッド

Module.class_evalメソッドってどういうときに使うんだっけ、どうしてclassキーワードを使わないんだろと、ふと気になったので簡単にまとめておく。 classキーワード 定数(クラス名)を必要とする 現在の束縛を捨てて、新しいスコープをオープン classはス…

ActiveRecord::Base.find

よくお世話になっているくせにRailsのfindメソッドのコードを初めて読んだので、メモ。 activerecord-2.3.2/lib/active_record/base.rb def find(*args) options = args.extract_options! validates_find_options(options) set_readonly_options!(options) c…

extract_options!

お馴染みextract_options!メソッドですが、正確なコードを忘れてしまっていたので備忘録としてメモ。module Arrayで定義されているのが個人的に面白いと感じたり。 Rails : 2.3.2 module ActiveSupport module CoreExtensions module Array module ExtractOp…

モンキーパッチの防止(Rakeの場合)

Rubyは動的言語であり、メタプログラミングを駆使すれば魔術のようなこともできる。一方で、一歩間違えればコードの複雑性が上がり、可読性が下がってしまう危険性があるどころか、思わぬ挙動を引き起こしてしまうこともある。 テストを必要十分に書くという…

ActiveRecord::AttributeMethods

明けましておめでとうございます。本年もよろしくお願いいたします。 新年早々、ActiveRecordのコードを読んでいて書き方が勉強になったので、今後の参考にメモしておきます。(ソースコードはこちら) ちなみに、もともとはinstance_method_already_impleme…

method_missing

メソッド呼び出しに失敗した場合、method_missingメソッドが呼び出される。 ここまでは既知ですが、このmethod_missingメソッド、通常のメソッドと同様に、当該クラスから探し、見つからなければ継承階層をスーパークラスへと登っていくとのこと。method_mis…

私の取り扱い説明書

var requestAnimationFrame = 1; 少し前にドラッカーの『プロフェッショナル』の条件を再読してみて、改めて「何かをなし遂げるのは、強みによってである」ということを学んだ。 そんなわけで、自分の強みについて改めて振り返って今後の指針にしたかったの…

JavaScriptの勉強その4 -文字列型-

型の話。文字列型に関する備忘録。 String 明示的な文字列オブジェクト生成は避けるべき new演算子を使う呼び出しを、コンストラクタ呼び出しと言う String関数は明示的な型変換のために使う 文字列オブジェクトも文字列値も不変(文字列の内容を書き換える…

『アジャイルな見積りと計画づくり』のまとめ

今行なっているプロジェクトの期日が比較的ゆるい、ということで、〆切意識がとても薄くなってしまい、プロジェクトの終了が延び延びになってしまっている。 これは由々しき事態、ということで、見積り意識を改めるべく『アジャイルな見積と計画づくり』を読…

CoffeeScriptの基礎まとめ その7

今回は最終回、関数についてです。 関数はJavaScriptだと少し面倒ですね。私もJavaScriptの中で苦手なところです。 例えば、JavaScriptだとこんな感じに書きます。 var hello; hello = function(s) { if (s == null) { s = "manaka"; } return alert("hello!…

CoffeeScriptの基礎まとめ その6

今回はループについて見ていきます。まずは配列を題材にして。 for i in [0..3] alert i JavaScriptだとこうなる。 var i, _i; for (i = _i = 0; _i <= 3; i = ++_i) { alert(i); } 次はもう少し長めのcode. a = ["tanaka", "manaka", "monaka"] for i in a …

CoffeeScriptの基礎まとめ その5

存在チェックの演算子を見ていきます。?で書くところはRubyに似ている気がします。 alert "ok" if name? JavaScriptで書くとこうなります。けっこう長くなりますね。 if (typeof name !== "undefined" && name !== null) { alert("ok"); }

CoffeeScriptの基礎まとめ その4

今回は条件分岐と比較演算子について見ていきます。まず、条件分岐の書き方を簡単に見てみます。 signal = "red" if signal == "red" alert "stop!" else if signal == "green" alert "go!" else alert "caution!" 次に比較演算子を簡単に紹介します。 is : …

CoffeeScriptの基礎まとめ その3

今回は、配列と連想配列を扱います。 CoffeeScriptだと、配列や連想配列もすっきり書けます。全体的にRubyっぽい書き方が採用されている気がします。 CoffeeScriptでは以下の様な書き方ができます。 a0 = [1, 2, 3, 4] a1 = [ 1, 5, 8 2, 3, 4 ] a2 = {"sato…

CoffeeScriptの基礎まとめ その2

今回は文字列を扱います。 s = "hello" s = "this is a pen. this is a panda. this is the end" ヒアドキュメントを使うと、こうなります。 s = "hello" s = """this is a pen. this is a panda. this is the end""" 変数を展開させるためには以下のように…

CoffeeScriptの基礎まとめ その1

家でアプリをつくるときにRails3.2を使っているのですが、そのRails3ではCoffeeScriptファイルが自動で生成されるようになっています。もともと興味があったこともあって、せっかくの機会なので勉強してみようと思い、少し基礎をまとめてみました。 CoffeeSc…

javascriptの勉強 その3 -関数-

引き続き、javascriptの勉強をしていきます。今回は少し重めの関数の話。 それでは早速。 関数は一連の命令文を内包したjavascriptの基本的な部品である 関数は、コードの再利用、情報の隠蔽、プログラムの構造化のために利用される また、関数はオブジェク…

javascriptの勉強 その2 -オブジェクト-

引き続きjavascriptの勉強を進めていきます。今回はオブジェクトの話です。 オブジェクト javascriptには、単純な変数型として、数値、文字列、真偽値(trueとfalse)、null、undefinedがある そして、それ以外の値はすべてオブジェクト 数値、文字列、真偽…

javascriptの勉強 その1 -文法-

たまに少しかじったりはちょくちょくしてたけど、 じっくり勉強したことはなかったのでそろそろ時間をとってjavascriptを勉強してみる。 題材はO'REILLYの『Javascript : The Good Parts』。 O'REILLY大好きです。 JavaScript: The Good Parts ―「良いパーツ…

ruby script/runnerのお話

以前ruby script/runner関連で意味不明なエラーが出たのでちょっと調べてみました。 今の自分にはわからないことが多かったので、雑多にまとめてみようと思います。 「RailsアプリでActiveRecordを使ったバッチ処理 その2」 http://higelog.brassworks.jp/?p…

『良いコードを書く技術』のまとめ その1

そろそろリファクタリングとか良いコードを書くことをもっと意識してもいいなと思ったので、『良いコードを書く技術』を読んでみた。いくつか参考になることがあったので、重要なところをまとめてみたいと思います。 Amazonで詳細を見る 目次 第1章 良いコー…

INNER JOINとOUTER JOIN

最近、SQL文を直接書く機会があって、今までほとんど全くSQLについて勉強する機会がなかったので業務に関係のあるところを少しかじってみることに。今までいかにActiveRecord先生にお世話になっていたかがよくわかりました。 さてさて、それでは本題。 INNER…

Ajaxの概観

ここ最近、何回かAjaxを扱う機会があり、理解が不十分だと感じることがあったのでまとめてみます。 Ajaxとは Ajaxという言葉の最初の「A」の部分は、「Asynchronous」、つまり「非同期」という意味です。 Ajaxのメリット Ajaxのメリットとしてよく語られてい…

正規表現基礎の基礎 その1

現在『Rubist Magazine 正しいRubyコードの書き方講座』を読んでいて、正規表現を前提としている説明があるため、慌てて基礎の基礎をさらってみました。 Regexpインスタンスの生成 >> Regexp.new("a") //はRegexpのインスタンス。 >> /Suzuki Milan Paak/.cl…

zshのまとめ その1

zsh

zshについて簡単にまとめてみる。 zshの特徴 履歴のインクリメンタルサーチ 強力でプログラミング可能なコマンドライン補完機能 複数のコマンド履歴の共有 強力なファイル名展開 スペルミス修正機能 左側だけでなく右側にもプロンプトを表示可能 拡張された…

type

●typeオブジェクトはclassの別名で、レシーバのオブジェクトが所属するクラスを返します。 ちなみにこのメソッドはRuby1.8で廃止となり、Ruby1.9で廃止されました。代わりにclassメソッドを使いましょう。 http://ref.xaio.jp/ruby/classes/object/type ●オ…

link_toとrender :locals

link_to ●link_toの第2引数にはhref属性になるリンク先URLを生成するためのパラメータを指定します。URL生成のパラメータはurl_forメソッドと同じものになります。 ●URLとして渡す際には文字列として渡されます。オブジェクトなども文字列として渡されるため…

test実行時のエラー

ArgumentError : wrong number of arguments (1 for 2) 引数の数がおかしいとのこと 参考(そんなに参考にならないけど): http://nyon2.net/archives/2008/01/ruby-on-rails-1.html ActiveRecord::StaleObjectError Rails2.3.2に以降になって出るようにな…

libディレクトリのファイル

libディレクトリのファイルを変更した場合、変更を反映させるためには一度サーバを再起動する必要がある 直接的にはあまり関係はありませんがlibディレクトリについては、以下の記事が多少参考になります。 http://d.hatena.ne.jp/haraguroblog/20081112/122…

empty?とblank?の違い

empty?とblank?はなにが違うのか。けっこうよく見かけますがいっこうに覚えられないので、この機会にまとめておきたいと思います。 .empty?(Rubyのメソッド) 文字の長さが0のときtrue .empty?の場合nilだったときは普通にエラーがでます You have a nil ob…

will_paginateでのページ送り

初めて使う機会があったので、いろいろと情報収集してみました。 参考になったエントリーをリストアップ。 http://higelog.brassworks.jp/?p=50 http://d.hatena.ne.jp/elm200/20080501/1209636980 http://www.katawara.com/2008/will_paginate_usage/ http:…

DBの内容を複数ページに分けて表示する

paginateメソッドを使えば、簡単にページ送りを実現できます。たとえば、テーブルの各レコードをページ送りで分割することを考えます。 次のように指定すると、entriesテーブルの各レコードを作成順(:order => "created_on")でページ送りすることになりま…

多対多の関連

多対多の関連をDBで表現するには、関連のあるテーブルにちょJavaScript苦節外部キーを定義するのではなく、両者への外部キーを持った結合テーブルを用意する Railsでは、このような関連を表現する方法として、has_many :through宣言と、has_and_belongs_to_m…

labelの話 その2

■label http://d.hatena.ne.jp/willnet/20080911/1221111749 <label> は、フォームの中で、フォーム部品とラベルを関係付けるために用いる。 ラベルを明示することにより、ブラウザでラベルをクリックした時や、ラベルのアクセスキーを押した時に、その部…

labelタグの話

labelタグとは labelは、フォームの中で、フォーム部品とラベルを関係付けるために用いる。 ラベルを明示することにより、ブラウザでラベルをクリックした時や、ラベルのアクセスキーを押した時に、その部品をクリックしたのと同じ動作をさせることができる…

destroyとdelete

ActiveRecord::Baseのdestroyメソッドやdestroy_allメソッドは、内部でモデルオブジェクトをロードし、各モデルオブジェクトのdestroyメソッドを呼び出している。 メリット 各種コールバックが利用できる。 デメリット 逆に、大量のレコードを一気に削除した…