何かインデントが汚くて...
これで治りました。おすすめ。
html improved indentation : A better indentation for HTML and embedded javascript
Authlogic + factory_girlの罠
Railsの認証プラグインではrestful_authenticationに迫る人気のauthlogicを使い始めました。
それと同時に!!テストはshoulda、fixtureはやめてfactory_girlを使っています。完全に単なる新しい物好きの挙動です。
それぞれ使い方はgithubのドキュメント見ればわかります。authlogicはサンプルアプリが助かりました。
躓いたところがあるので補足します。
functional testを書いてたら、どうもauthlogicでログインが出来ませぬ。
最初は確かこんな感じ。最後の二つ(password_saltとcrypted_password)は、サンプルアプリのfixtureからとってきました。
$ cat test/factories.rb
でも、どうもうまくいかない。Factoryで作ったsaltで暗号化されてないっぽい。何でなの?
調べてみると
だそうで。いいの?saltとか指定しないで?平気でした。Factoryがよろしく作ってくれました。
さらに。authlogicはユーザー(例えば。acts_as_authenticなモデル)のインスタンスを生成すると勝手にログインしてくれるので、そこも注意です。
それと同時に!!テストはshoulda、fixtureはやめてfactory_girlを使っています。完全に単なる新しい物好きの挙動です。
それぞれ使い方はgithubのドキュメント見ればわかります。authlogicはサンプルアプリが助かりました。
躓いたところがあるので補足します。
functional testを書いてたら、どうもauthlogicでログインが出来ませぬ。
最初は確かこんな感じ。最後の二つ(password_saltとcrypted_password)は、サンプルアプリのfixtureからとってきました。
$ cat test/factories.rb
Factory.define :ユーザさん, :class => User do |f|
f.username "ユーザさん"
f.email "ユーザさん@example.com"
f.password "pasuwado"
f.password_confirmation "pasuwado"
f.password_salt (salt = Authlogic::Random.hex_token)
f.crypted_password {Authlogic::CryptoProviders::Sha512.encrypt("sasasa" + salt)}
end
でも、どうもうまくいかない。Factoryで作ったsaltで暗号化されてないっぽい。何でなの?
調べてみると
it's all good, I am not using fixtures but Factories.
Factory.define :user do |u|
u.login Factory.next :login
u.password "password"
u.password_confirmation "password"
end
now it works fine.
だそうで。いいの?saltとか指定しないで?平気でした。Factoryがよろしく作ってくれました。
なので、これでOK。
$ cat test/factories.rb
Factory.define :ユーザさん, :class => User do |f|
f.username "ユーザさん"
f.email "ユーザさん@example.com"
f.password "pasuwado"
f.password_confirmation "pasuwado"
end
さらに。authlogicはユーザー(例えば。acts_as_authenticなモデル)のインスタンスを生成すると勝手にログインしてくれるので、そこも注意です。
$ cat test/functional/user_sessions_controller_test.rb
require 'test_helper'
class UserSessionsControllerTest < ActionController::TestCase
context "UserSessionsController" do
setup do
activate_authlogic
@ユーザさん = Factory.create(:ユーザさん)
UserSession.find.destroy #ログアウトしておく
end
end
Labels:
authlogic,
factory_girl,
Rails
tools for trade
gvim
これはひつようだ
PuTTY
teratermでもいいんだけど
clocx
時計。便利っつーか…
VirtuaWin
マルチデスクトップ。これは便利!サボり用、仕事用に分けるのが◎
Firefox
3.6 beta4を使ってます。greasemonkeyだとかEchofonだとか、色々対応していませんが、無くてもそれはそれでやっていけるものです。organize status barはオススメ。
addon
Adblock Plus, Tab Mix Plus, Firebug, Menu Editor, Organize Status Bar, Live HTTP Headers, ColorZilla, RefControl
あとdotfiles。前はいじっていたが、どうでも良くなってきた。プラグインも全部ぶちこんでいます。
これはひつようだ
PuTTY
teratermでもいいんだけど
clocx
時計。便利っつーか…
VirtuaWin
マルチデスクトップ。これは便利!サボり用、仕事用に分けるのが◎
Firefox
3.6 beta4を使ってます。greasemonkeyだとかEchofonだとか、色々対応していませんが、無くてもそれはそれでやっていけるものです。organize status barはオススメ。
addon
Adblock Plus, Tab Mix Plus, Firebug, Menu Editor, Organize Status Bar, Live HTTP Headers, ColorZilla, RefControl
あとdotfiles。前はいじっていたが、どうでも良くなってきた。プラグインも全部ぶちこんでいます。
javascriptを用い、ランダムに画像を表示せよ。連続して同じ画像を表示してはならない。
でけた♪でけた♪
これをonMouseOverとかで読んであげよう。
サンプル http://so-wat-cha-say.in/
documentオブジェクトに毎回アクセスしてるけど、いいんだ。
images = ["back1.JPG","back2.JPG","back3.JPG","back4.JPG","back5.JPG"]
rand = function(i){return Math.floor( Math.random() * i );}
setRandomImage = function(){
function another_image(){
r = ("url(" + images[rand(images.length)] + ")");
return document.getElementById("どこか").style.backgroundImage != r ? r : another_image();
};
document.getElementById("どこか").style.backgroundImage = another_image();
};
これをonMouseOverとかで読んであげよう。
サンプル http://so-wat-cha-say.in/
documentオブジェクトに毎回アクセスしてるけど、いいんだ。
Labels:
javascript
MVC?MCV?
Ruby on Railsの「えせMVC」の弊害
正しくは、MCVじゃないかと思った。
学生の頃、何かしらの哲学者の主張の正確な読解を目指す本を手に取るたび、「それ、今使えんの?」と思ったものでした。
正確な解釈は必要。だけど、今を生きる若者なのでバーリンの解説書でも読むっす。すぐ使えるし。
正しくは、MCVじゃないかと思った。
学生の頃、何かしらの哲学者の主張の正確な読解を目指す本を手に取るたび、「それ、今使えんの?」と思ったものでした。
正確な解釈は必要。だけど、今を生きる若者なのでバーリンの解説書でも読むっす。すぐ使えるし。
Labels:
design pattern,
Rails
*_path(相対パス), *_url(絶対パス)
マイグレーション失敗
rake db:schema:dump
rake db:reset
でDB復活。データは消えるっぽい。
気が付いたらrake db:migrateが止まるようになってしもうた。
昔あったメソッドを使おうとする、手動で追加したカラムを追加しようとする、などが原因。
変なことせず、Railsさんのやりたい方法でやらせてあげるのが一番だね。
rake db:reset
でDB復活。データは消えるっぽい。
気が付いたらrake db:migrateが止まるようになってしもうた。
昔あったメソッドを使おうとする、手動で追加したカラムを追加しようとする、などが原因。
変なことせず、Railsさんのやりたい方法でやらせてあげるのが一番だね。
Labels:
activerecord,
migration,
rake
autotestよりしなやかな自動テスト
autotest/autospecはとても便利。ちゃんとテストを書いてればね。
でもちょっと高圧的というか、もうちょっとゆるくやって欲しいというか。
もっとやさしい、しかも賢いの、ありました。
watchr
Flexible Continuous Testing
・コントローラとモデルだけテストを書く
・autotestは変更部分のみ流したい
と思っていたので、こうやってやりました。これをアプリケーションのrootに置いておけば、コントローラ、モデル、rspecを変更するや否や対応するテストが流れてくれます。かしこいね。
やさしいautospec.rb
でもちょっと高圧的というか、もうちょっとゆるくやって欲しいというか。
もっとやさしい、しかも賢いの、ありました。
watchr
Flexible Continuous Testing
・コントローラとモデルだけテストを書く
・autotestは変更部分のみ流したい
と思っていたので、こうやってやりました。これをアプリケーションのrootに置いておけば、コントローラ、モデル、rspecを変更するや否や対応するテストが流れてくれます。かしこいね。
やさしいautospec.rb
watch('spec\/.*\/*.rb') {|md|system "script/spec #{md[0]} -cfs"}
['controllers', 'models'].each do |t| watch("app/#{t}/.*\.rb"){|md|
spec = md[0].gsub(/app\/#{t}\//, "").gsub(/\.rb/,"_spec.rb")
system "script/spec spec/#{t}/#{spec} -cfs"
}
end
名刺
Railsアプリを配備する目的で借りたVPS。
ドメインもとったし、せっかくなので名刺的なページを作りました。
http://so-wat-cha-say.in/
Debian + Apacheです。別にPassengerを使ってRailsアプリを動かしているので、「名前ベースのバーチャルホスト」でリクエストの振り分けをしました。「名前ベースのバーチャルホスト」…なんとも中途半端な翻訳です。
このあたりを参考にしました。
Hosting multiple websites with Apache2
名前ベースのバーチャルホスト
背景の写真はランダムに表示されるようにしました。リロードしてみてください。
東京で撮ったものと、ドイツに旅行に行った時に撮ったものです。
Ricoh R10で撮りました。ついでに一枚。北の丸公園です。
ドメインもとったし、せっかくなので名刺的なページを作りました。
http://so-wat-cha-say.in/
Debian + Apacheです。別にPassengerを使ってRailsアプリを動かしているので、「名前ベースのバーチャルホスト」でリクエストの振り分けをしました。「名前ベースのバーチャルホスト」…なんとも中途半端な翻訳です。
このあたりを参考にしました。
Hosting multiple websites with Apache2
名前ベースのバーチャルホスト
背景の写真はランダムに表示されるようにしました。リロードしてみてください。
東京で撮ったものと、ドイツに旅行に行った時に撮ったものです。
Ricoh R10で撮りました。ついでに一枚。北の丸公園です。
Labels:
apache
今日のSVNお便利コマンド
マイグレーションが通らないんで、気に入らない文字列を含むのをを消した。
消しすぎて戻すのが大変なので、なんとか工夫してみた。
必要な変更が消えたり、戻ったりしないよう、気をつけてつかってね。
grep "文字列" db/migrate -rl |xargs svn rm
消しすぎて戻すのが大変なので、なんとか工夫してみた。
svn st db/migrate/|grep D|sed -e "s/D//"|xargs svn revert
必要な変更が消えたり、戻ったりしないよう、気をつけてつかってね。
Labels:
bash,
subversion
メールもrspec on Railsしちゃおう
できるぞ~。
送るメールはファイルを直接読みました。
受信はコンソールからやる時と同じ。
to_sでTmailのメールオブジェクトから生メールに戻してあげて。
何を送ったかも~ わかるよ~♪
例によって受け売りです。
RSpec: Testing Mail Delivery (simple)
送るメールはファイルを直接読みました。
before do raw_email = File.read(RAILS_ROOT + '/どこか/test.eml') @mail = TMail::Mail.parse(raw_email) @mail.to = "アドレス" end
受信はコンソールからやる時と同じ。
to_sでTmailのメールオブジェクトから生メールに戻してあげて。
UserMailer.receive(@mail.to_s)
何を送ったかも~ わかるよ~♪
describe "送ったら" do it "送った個数が増えるはず!" do lambda{ #ここで送る }.should change(sent, :count).by(1) endsent.first.bodyで本文見れます。
例によって受け売りです。
RSpec: Testing Mail Delivery (simple)
Labels:
actionmailer,
Rails,
Rspec
bash to rush
Rubyっぽいbash。まじですか。
確かに、BashのUI(interfaceなのは間違いないよね)はたまにヒドイ。Rubyにしたくなる気持ちはわかる。
しかし、、、これはやっぱりきもい。
ここで知りました。
Blink #1 - The first in a series of Link-Blogging posts
Rush
rush is a replacement for the unix shell (bash, zsh, etc) which uses pure Ruby syntax.
確かに、BashのUI(interfaceなのは間違いないよね)はたまにヒドイ。Rubyにしたくなる気持ちはわかる。
しかし、、、これはやっぱりきもい。
myproj.lsまさかのリモートアクセスもできます。
myproj['app/models/my_model.rb'].vi
ここで知りました。
Blink #1 - The first in a series of Link-Blogging posts
知らなんだ
render :partialって毎回書くのうっとうしいなー。と思っていたところでした。
基本、パーシャルしかレンダーしないっす。
What's New in Edge Rails: render Stops Being High-Maintenance
2.3からは
なんとすまーとな。
基本、パーシャルしかレンダーしないっす。
What's New in Edge Rails: render Stops Being High-Maintenance
2.3からは
render @article
なんとすまーとな。
Labels:
ActionView,
Rails
最新のRailsでrestful_authenticationを使う苦労に苛まれる初秋の一日でした。
2.3.4でrestful_authenticationのspecが通らない。この子たちのせいだった。
Rspecが新しいとダメな所がありました。下記のパッチみたいに直せばOKでした(update for rspec > 1.1.12らしい)。
http://github.com/dchelimsky/restful-authentication/commit/ad92c6cb52500c37ef81e30ac4e79adffc2f4d39
formatted_* routesが無くなった。これで通るっす。
いきさつ
What's New in Edge Rails: No More Formatted Routes
Add optional :format argument to named routes
Rspecが新しいとダメな所がありました。下記のパッチみたいに直せばOKでした(update for rspec > 1.1.12らしい)。
http://github.com/dchelimsky/restful-authentication/commit/ad92c6cb52500c37ef81e30ac4e79adffc2f4d39
formatted_* routesが無くなった。これで通るっす。
- formatted_user_path(:id => '1', :format => 'xml').should == "/users/1.xml" - formatted_user_path(:id => '1', :format => 'json').should == "/users/1.json" + user_path(:id => '1', :format => 'xml').should == "/users/1.xml" + user_path(:id => '1', :format => 'json').should == "/users/1.json"
いきさつ
What's New in Edge Rails: No More Formatted Routes
Add optional :format argument to named routes
Labels:
Rails,
restful_authentication,
Rspec
XSS怖い、全部マークアップ外す。
XSS怖いですね。
Webのセキュリティ努力のゴールにあるのは「絶望」のみ
ということで遊びで作ってるRailsアプリもちゃんと対策しようと思いました。
で、Safe ERBを入れようとすると。。。
mongrelだと使えない。わざわざWebrickを使うのもメンドウなんです。
探してみたらお便利プラグインありました。
入れただけで、勝手にマークアップをはずします。何もしないでOK。すばらしい。
TechCrunchで挙がっていた例のこいつ
が、こう
なります。
設定すれば一部のカラムだけ除外とかもできるみたいです。リッチなテキストにしたくなったら、そうします。
xss_terminate
ここで見つけました。
Auto-escaping HTML with Rails
Webのセキュリティ努力のゴールにあるのは「絶望」のみ
ということで遊びで作ってるRailsアプリもちゃんと対策しようと思いました。
で、Safe ERBを入れようとすると。。。
mongrelだと使えない。わざわざWebrickを使うのもメンドウなんです。
探してみたらお便利プラグインありました。
入れただけで、勝手にマークアップをはずします。何もしないでOK。すばらしい。
TechCrunchで挙がっていた例のこいつ
'<script>alert('y0');</script>'
が、こう
'alert('y0');'
なります。
設定すれば一部のカラムだけ除外とかもできるみたいです。リッチなテキストにしたくなったら、そうします。
xss_terminate
ここで見つけました。
Auto-escaping HTML with Rails
AJAXなアクションでflashがついてこない
僕はRailsのflashが好きです。理由はありません。
しかし、こいつ、Ajaxのアクションに対してはうまく動作してくれない。
普通のhttpだとページ遷移すると消えてくれるのですが、どうやらxhrだとそこの片付けをしてくれません。何ということだ…。
なので、下記を参考にがんばって非同期に更新できるようにしました。
Rails Flash with Ajax
flashの部分をpartialに切り出して、毎回page.replace_htmlしてあげる戦略です。
書いてある通りにやろうとしたらダメだった。
ヘルパーにちゃんとpageオブジェクトを渡してあげる。
ちなみにビューのremote_form_forでupdate_pageしようとしたらダメだった。
コントローラを通る前のflashパーシャルをrenderしても、flashに何も入ってないから意味ないし。
しかし、こいつ、Ajaxのアクションに対してはうまく動作してくれない。
普通のhttpだとページ遷移すると消えてくれるのですが、どうやらxhrだとそこの片付けをしてくれません。何ということだ…。
なので、下記を参考にがんばって非同期に更新できるようにしました。
Rails Flash with Ajax
flashの部分をpartialに切り出して、毎回page.replace_htmlしてあげる戦略です。
書いてある通りにやろうとしたらダメだった。
ヘルパーにちゃんとpageオブジェクトを渡してあげる。
module ApplicationHelper
~~~~~
def reload_flash(page)
page.replace_html 'flash', :partial => 'layouts/flash'
flash.discard
end
~~~~
end
ちなみにビューのremote_form_forでupdate_pageしようとしたらダメだった。
コントローラを通る前のflashパーシャルをrenderしても、flashに何も入ってないから意味ないし。
配列おまとめyield
def お徳用(商品) return if 商品.length == 0 if 商品.length >6 [商品[0..5]] + お徳用(商品[6..商品.length]) else [商品[0..5]] end end
これを読んでおいてよかった。と思った瞬間。
(とはいえ、まだ全部読んでない)
The Little Schemer, 4th Edition The MIT Press 1995-12-21 売り上げランキング : 3390 Amazonで詳しく見る by G-Tools |
できた!と思ったら、each_sliceなんてものがあるのか…
traps in a sandbox
Lessons learnt the hard way: Don't use script/console --sandbox on production apps
It also commits implicit commit like ALTER TABLE. just get fucked now.
script/console --sandboxでALTER TABLEとかすると、その前の変更がコミットされちゃいます。くそ!
It also commits implicit commit like ALTER TABLE. just get fucked now.
script/console --sandboxでALTER TABLEとかすると、その前の変更がコミットされちゃいます。くそ!
乗組員。
Debian Lenny + Rails2.3.3 + Passenger2.2.4で、デプロイしたっす。
「とりあえずやってよう」と思いやってみたら、特に何の問題もなく、あっという間に配備できました。
インストール後、
# passenger-install-apache2-module
で対話的に進みます。
参考:
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用
「とりあえずやってよう」と思いやってみたら、特に何の問題もなく、あっという間に配備できました。
インストール後、
# passenger-install-apache2-module
で対話的に進みます。
参考:
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用
Rails Cheetsheets
Railsで何かするとなると大体googleでサンプルコードを見ることになる。
だって覚えられないんだもん。
ということでチートシート。うーん便利。助かる。
Ruby on Rails > Cheatsheets
だって覚えられないんだもん。
ということでチートシート。うーん便利。助かる。
Ruby on Rails > Cheatsheets
Labels:
Rails
ドsudo
なまえ ALL=(ALL) NOPASSWD: ALL
# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL
でOK
# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL
でOK
site_keyをリポジトリに置いてないが故の。
Restful_AuthenticationのREADMEに「site_keys.rbはリポジトリに置くな」とある。確かに。
で、チェックアウトしたアプリケーションはsite_keyが無いので動かない。
って怒られる。
やっぱり。site_keys.rbはrakeで作れました!
Uninitialized Constant By Password
で、チェックアウトしたアプリケーションはsite_keyが無いので動かない。
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:443:in `load_missing_constant': uninitialized constant REST_AUTH_SITE_KEY (NameError)
って怒られる。
やっぱり。site_keys.rbはrakeで作れました!
Uninitialized Constant By Password
$ rake auth:gen:site_key
Labels:
Rails,
restful_authentication
datetime_selectでnilも使いたい。
datetime_selectは、nil値にはデフォルトでなぜか現在時刻が入る。なぜだ!
こうすればnilできた
Nil value on datetime_select?
こうすればnilできた
f.datetime_select :start, :include_blank => true
Nil value on datetime_select?
Labels:
activerecord,
Rails
極太
Oldie But Goodie: Sketching with a Sharpie
太いペンでUIのスケッチをしろと。同感。アメリカだけあって、ペンがSharpieなのが面白い。
たしかにサインペンとかのもつ謎のパワーはすごい。
太いペンでUIのスケッチをしろと。同感。アメリカだけあって、ペンがSharpieなのが面白い。
たしかにサインペンとかのもつ謎のパワーはすごい。
一度にいろんな条件でFindしたい
パラメータからFindの条件を作る部分をまとめたかった。
普通の条件なら
cond[:パラメータ] = params[:パラメータ]
でぽんぽん追加してあげればいいんだけど、配列でやりたい条件もあった。
そんな時はこれ。
ActiveRecord Query Building with Multiple and Optional Conditions
こんな感じでやりました。案外簡単にできるもんですね。
普通の条件なら
cond[:パラメータ] = params[:パラメータ]
でぽんぽん追加してあげればいいんだけど、配列でやりたい条件もあった。
そんな時はこれ。
ActiveRecord Query Building with Multiple and Optional Conditions
こんな感じでやりました。案外簡単にできるもんですね。
def create_cond_from_params(params)
cond = []
args = {}
#p1は指定したい
if !params[:p1].blank?
cond << "p1 = :p1"
args[:p1] = params[:p1]
end
# p2、あるかな?
if params[:p2]
cond << 'p2 IS NOT NULL'
end
return [] if cond.blank?
[cond.join(" AND "), args]
end
Labels:
activerecord,
Rails
ぽりぽり
Polymorphic Relationships => Rails Wiki
結構簡単にできる。べんり~
でもこういうときはインターフェースが欲しいっす。それっぽいことは出来るんだろうけど。。
追記
できた。Polymorphicにくっつけたクラスのゲッターで、それを拡張してあげればOK。aliasとclass << くっつけたクラス で。
しかし、何かイボーな気配がする。
結構簡単にできる。べんり~
でもこういうときはインターフェースが欲しいっす。それっぽいことは出来るんだろうけど。。
追記
できた。Polymorphicにくっつけたクラスのゲッターで、それを拡張してあげればOK。aliasとclass << くっつけたクラス で。
しかし、何かイボーな気配がする。
Labels:
activerecord,
Rails
こーるばっく
All about Rails Disabling callbacks in an ActiveRecord data migration
Observer for model with polymorphic relations caused error which says "stack level too deep". solved.
Observer for model with polymorphic relations caused error which says "stack level too deep". solved.
SVNちがい
VMware上のdebianにsambaを導入して、xpのtortoiseSVNで変更を試みたら…
subversionクライアントのバージョンが違うとかいって怒られた。
「This
client is too old to work with working copy
'...'(...作業コピーに対して、このクライアントは古すぎます)」というエラーメッセージが表示されました。Subversionをアップグレー
ドすることなく、これを解決したいんですが。
Ruby on Rails/ActiveRecord::Observer - アークウェブシステム開発SandBox
subversionクライアントのバージョンが違うとかいって怒られた。
svn: このクライアントは、作業コピー '.' を扱うには古すぎます。もっと新しい Subversion クライアントをダウンロードしてください。下を使ったら治ったよ。
「This
client is too old to work with working copy
'...'(...作業コピーに対して、このクライアントは古すぎます)」というエラーメッセージが表示されました。Subversionをアップグレー
ドすることなく、これを解決したいんですが。
$ python change-svn-wc-format.py #{ローカルコピーのパス} 1.4
Ruby on Rails/ActiveRecord::Observer - アークウェブシステム開発SandBox
砂箱。
script/consoleのオプション一覧
とりあえずsandboxにしといたほうがいいっぽい。
Xiaobo On Rails: Rails irb or script/console tips in one glimpse

とりあえずsandboxにしといたほうがいいっぽい。
Xiaobo On Rails: Rails irb or script/console tips in one glimpse
Labels:
Rails,
script/console
普通に消しちゃったやつをsvn rm
svn st |grep '^!' | awk '{print $2}' |xargs svn rm
でっきた
でっきた
Labels:
awk,
bash,
subversion
blank?の正体
root/trunk/activesupport/lib/active_support/core_ext/blank.rb
http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/core_ext/blank.rb
ふーん
http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/core_ext/blank.rb
ふーん
Labels:
Rails
メール受信のてすと
http://plaza.rakuten.co.jp/estyle2001/diary/200708060000/
cat メールのファイル | script/runner 'モデル.receive(STDIN.read)'
emlを直接ぶちこめばOKでした。
cat メールのファイル | script/runner 'モデル.receive(STDIN.read)'
emlを直接ぶちこめばOKでした。
Labels:
actionmailer,
mail,
Rails,
thunderbird
Subscribe to:
Posts (Atom)
Author
Labels
- actionmailer (2)
- ActionView (2)
- activerecord (5)
- Ajax (1)
- apache (2)
- authlogic (2)
- awk (2)
- bash (4)
- block (1)
- cache (1)
- capistrano (1)
- crontab (1)
- Debian (1)
- deployment (1)
- design (2)
- design pattern (1)
- exception_notifier (1)
- factory_girl (2)
- firefox (1)
- flash (1)
- git (2)
- haml (1)
- html (1)
- javascript (5)
- jQuery (3)
- life (2)
- linux (3)
- lisp (2)
- mail (1)
- migration (1)
- mysql (2)
- Passenger (2)
- prototype.js (1)
- Rails (26)
- Rails3 (1)
- rake (1)
- restful_authentication (2)
- Rspec (3)
- ruby (10)
- rubygems (1)
- screen (1)
- script/console (1)
- Security (1)
- shouda (1)
- shoulda (3)
- subversion (2)
- sudo (1)
- tdd (1)
- testing (4)
- thunderbird (1)
- UI (1)
- unix (1)
- vim (3)
- work (1)
- xargs (1)
- xss (1)
- zsh (1)