maeshimaの日記

メモ書きです

2010-06-01から1ヶ月間の記事一覧

今週のrailscasts - PDFkit

Railscasts - PDFKitを見て。htmlをpdfに変換するライブラリpdfkitについて。裏ではwkhtmltopdfを使ってる。他には特に気になるところは無し。名前だけ覚えておこう。

workとjobの違い

ESL Podcast Blog » Blog Archive » You Have Work/a Job To Doを見て。 workは集合名詞 jobは可算名詞 jobとworkはだいたい同じ意味 jobは特定の仕事を指す。これまでの会話に出てきた仕事を指すことが多い。 workも特定の仕事を指すけど、「やんなきゃいけ…

今週のrailscasts - Active Model

Railscasts - Active Modelを見て。DBにいれたくないデータをActive Model で扱う例。 include ActiveModel::Validation を入れる。これでvalidationが使えるようになる。モジュールをさらに追加することで(これまでのActiveRecordっぽく)できる下記の二つを…

Chapter 14 Spec::Mocks

あんまり需要なさそうなのでメインブログから引っ越し。mockについて。 14.1 Test Doubles Test Doubleは他のオブジェクトの代わりをするオブジェクトSpec::Mocks double("double") stub("stub") mock("mock") これらのメソッドは全部同じで Spec::Mocks::Mo…

controllerでエラー発生時のテストをしたいとき

エラー発生時に500ページを表示するようなテストを書きたいときに、デフォルトだとrspecがエラーを横取りしてしまってうまくいかない。spec中に下記のように書いておくと横取りを防げるみたい。 rescue_action_in_public! # 昔の書き方。今はdepricated # co…

今週のrailscasts - making generators in rails 3

http://railscasts.com/episodes/218-making-generators-in-rails-3を見て。Rails3になって変わったgeneratorの作り方について。 基礎 内部でthorを使うようになった。 rails g generator hoge で hoge generator のひな形を Rails.root/lib/generators 配下…

helperのテスト

helperメソッドを使うと、describeの引数で設定したヘルパーモジュールのインスタンスにアクセスできる。インスタンス変数 @hoge に "fuga" を入れてテストしたい時は下記のように assign メソッドを使う assign[:hoge] = "fuga"

rake

rakeファイルの書き方を必要そうなとこだけざっくり調べた。 タスク 引数の書式は下記の二通り 処理したいタスクの名前のString 処理したいタスク => 依存するタスクのハッシュ ブロック中の処理が実行される "default"のみ予約語。実行タスクが指定されない…

ファイルの最終アクセス時刻と更新時間を変更する

File.utime(atime, mtime[, filename[, ...]]) ファイルの最終アクセス時刻と更新時間を変更する

演算子以外の"&"の使い方

復習復習! メソッド宣言時 & メソッド宣言の中で、最後のメソッド引数の名前の前に付けて、メソッドに渡されたブロックをその引数に代入できるようにする。 メソッド呼び出し時 メソッド呼び出しの中で、メソッドにまるでブロックのようにprocを渡すときに…

演算子以外の"*"の使い方

Ruby使いにはあたりまえすぎる話だけど念のため復習しとく。 メソッド宣言時の可変長引数リスト 引数をまとめて配列に格納する。 def hoge(*args) args end hoge(1,2,3) #=> [1,2,3] 配列やEnumerableオブジェクトの展開 代入やメソッド呼び出しの中の配列に…

itsメソッド

これはべんり! describe Array do before do @ary = [1, 2, 3] end subject{@ary} its(:size){should == 3} end 参考 OSC2009 Tokyo/FallでCukeとRSpecの紹介をしました - moroの日記

pathname

RubyPulse :: RubyPulse Episode 0.40 - pathname - Pathname represents a pathname which locates a file in a filesystem. - RubyDocをみて。pathnameはpathnameを簡単に扱える標準ライブラリ。 require File.join(File.dirname(__FILE__), 'boot') みた…

今週のrailscasts - Multistep Forms

Railscasts - Multistep Formsを見て。formの内容が多くて複数ページに分割する場合のtips。 基本的な流れ それぞれの input 部分を partial templateにする ページ毎に名前を付けて配列で格納 render :partial => "" の部分を session で切り替える session…

RSpec Machers

RSpec Matchers | Teach Me To Codeカスタムマッチャの定義についての上記のサイトを見て。下記のような感じで定義できるみたい。 Spec::Matchers.define :contains do |element| match do |container| container.include? element end end describe Array d…

Classクラスの===

Classクラスの === は、右辺が左辺に指定するクラスのインスタンスになっているかどうかをテストする。なので同じクラス同士を===で比較してもfalseになる class A; end A === A #=> false

今週のrailscasts - Generators in Rails 3

Railscasts - Generators in Rails 3 rails g scaffold --help とするとオプションがみれる。 rails g scaffold --no-stylehseets とすると、デフォルトtrueなstylesheetsオプションをオフに出来る。rails g xxx としたときにinvokeと書かれたgeneratorが実…

homeとhouseの違い

houseは独立した家を指す。 apartment condominum townhouse はhouseじゃないけどhomeとは言える。homeはhouseを含む言葉。ESL Podcast Blog » Blog Archive » Is a “House” a “Home”?

ファイルを削除したくないが、版管理の対象からは除きたい

git

git rm --cached -f hoge.txt などとする

.gitignore

git

ファイル 下記の優先度で無視ファイルが設定される。 .gitignore .git/info/exclude core.excludesfileで指定されたファイル .gitignoreが複数ある場合は、対象となるファイルに近い.gitignoreの方が優先。 プロジェクトメンバー全員で共有したい場合は.giti…

PassengerHighPerformance

Apacheとの互換性を減らすことで高速化する設定。これは!と思ったけどnginx版にはない設定項目みたい。PassengerHighPerformance

ネスト元のクラス or モジュールが定義されていないとエラー

下記の例だとHogeやHoge::Fugaを定義してやる必要があるみたい。 # -*- coding: utf-8 -*- class Hoge::Fuga::Foo def self.hoge puts "hoge" end end Hoge::Fuga::Foo.hoge #=> uninitialized constant Hoge (NameError) これならおk # -*- coding: utf-8 …

"字句的に"囲っていることが定数探索の条件

Hoge::Fuga::Fooで定数Aを探すときに、Hoge::Fuga::Foo, Hoge::Fuga, Hogeの順で探すのかと思ってたけどそうではないみたいね # -*- coding: utf-8 -*- class Fuga def self.hoge puts "hoge" end end module Hoge module Fuga def self.hoge puts "fuga" en…

passengerのBundler support

2.1.12からBundlerをサポートするようになった模様。 アプリをロードする前に Rails.root/.bundle/environment.rb を require する 上記ファイルがなければ、自動でBundler.setup()を実行する(Gemfileがあれば) config.ruやconfig/boot.rbよりも前にrequire…