maeshimaの日記

メモ書きです

rails

aasm

はてブ振り返りで再発見。今のところaasmを使えるようなアプリを作ってないけど、いつかの時のためにこういうプラグインがあることを覚えておきたい acts_as_state_machineは、状態遷移のような泥臭い実装を簡単に実現してくれます Railsを業務システムに適…

nested layouts

Layouts and Rendering in Railsの最後の方を見て。app/layouts/application.html.erb <html> <head> <title><%= @page_title or 'Page Title' %></title> <%= stylesheet_link_tag 'layout' %> <style type="text/css"><%= yield :stylesheets %></style> </head> <body> <div id="top_menu">Top menu items here</div> </body></html>

Railsレシピブック Recipe 18-28

Railsレシピブック Recipe 1 - 17 - maeshimaの日記の続き。 部分テンプレートの繰り返し回数 部分テンプレート上で:collectionオプションを使ったときに、部分テンプレートの名前がローカル変数名になり、ローカル変数名_counterが繰り返し回数になる rende…

railscasts - Cron in Ruby

Railscasts - Cron in Rubyを見て。Ruby単体でCronを実装してるのかなーと思ったら、ただ単にRuby的な記法でCron設定ファイルを書く→Cron設定ファイルを生成するというプラグインだった。

今週のrailscasts - unobtrusive javascript

Railscasts - Unobtrusive Javascriptを見て。 主な変更点 rails3からはhtml5に全面的に対応している。そのため、これまでヘルパーメソッドでの出力が変わってるものがある。変更内容としては、タグの属性としてdata-xxxみたいなものが追加されて、onclickな…

railscasts - Destroy Without Javascript

Railscasts - Destroy Without JavaScript を読んで。通常の削除用のリンク(下記のような)は、javascriptが使えることが前提になっている。 link_to "destroy", :confirm => "Are you sure?", :method => :delete なので、javascriptを無効にしているブラウ…

railsでselectタグを出力するヘルパー

メモ option include_blank trueなら空白のoptionタグが作られる prompt 値が空白のoptionで表示される文字列を指定。include_blankとは共存できないっぽい index 出力結果のindexを指定できる disabled disabled optionを出力する select 利用例 select("po…

railsのテンプレート機能

作ってすっかり放置してたけどまたやり直したい。んでgithubに設定を置くようにしよう。Rails2.3のApplication Templateを使ってRspecやI18nの設定を自動化 - func09

script/consoleでcontrollerをたたく

これまではブラウザで直接controllerに対応するパスを叩いてたけど、script/consoleのappメソッドを使うのもいいかもしれないなーと思ったscript/console中のapp,helperメソッド - maeshimaの日記

ポリモーフィック関連

復習メモ。簡単にまとめると、belongs_toの対象を抽象化する手法。 使い方 belongs_toで渡す関連名_id belongs_toで渡す関連名_type の二つのカラムを含むモデルを定義する。参照元で belongs_to :hoge, :polymorphic => true 参照先で has_many :fuga, :as …

バリューオブジェクト

復習メモ。バリューオブジェクトはActiveRecordの複数のカラムをオブジェクトにまとめたもの。 使い方 第一引数に、使用したいバリューオブジェクトを設定、取得するためのメソッド名を指定 第二引数はオプション。mappingでActiveRecordのカラムとバリュー…

Railsレシピブック Recipe 1 - 17

大体一通り全部読んでるけど、忘れているところも多そうなので復習メモ。気になったところだけ抜粋するので他の人が見てもよくわからないかもしれません。あと本の内容だけじゃなくて気になったところを深掘りして調べたりもしています。 Windowsにrailsイン…

今週のrailscasts - Routing in Rails 3

Railscasts - Routing in Rails 3rails3のルーティングについて いろんなオプションがブロック付きのメソッドとしても使える named_routesは match "/about(.:format)" => "info#about", :as => :about のようにasオプションで指定するview上でdebugメソッド…

before_filter系のメソッドの引数にオブジェクトを指定できる

ずっとメソッド名の指定しかしてないので忘れてた。 filter before after のメソッドのどれか一つを実装しているオブジェクトを指定できるみたい。複数コントローラで共通のfilterを使う時に使えるとは思う。現状はコントローラ毎に微妙に挙動を変えたかった…

script/runnerのshebang

いつもは script/runner script/hoge のようにしてたけど、shebangで実行できるみたいね #!/usr/bin/env /Users/maeshima/hoge/script/runner Product.find(:all).each { |p| p.price *= 2 ; p.save! } (追記) でもこの方法ってサーバ毎でディレクトリが異な…

今週のrailscasts - Active Record Queries in Rails 3

Railscasts - Active Record Queries in Rails 3基本的には、findメソッドに渡すハッシュキーがそのままメソッドになる。 # Article.find(:all, :order => "published_at desc", :limit => 10) Article.order("published_at desc").limit(10) 例外はconditio…

rake gems

rake gems でrailsが依存してるgemの一覧と状態を表示してくれる rake gems:unpack でvendor/gemsにgemを展開する。たしかGEM=hogeのようにして特定のgemだけ展開させることが出来たはず

Rails Engines

Rails Engines - おもしろWEBサービス開発日記を読んでRails castsを復習。 Rails Enginesとは? 「独立して作ったRailsアプリをそのままプラグイン化して他のRailsアプリとマージさせられる機能」 やり方 script/generate plugin でプラグイン作るpluginの…

verify

renderの指定はハッシュの入れ子でできる verify :xhr => true, :render => {:status => 403, :template => "system/403"}, :except => :index

machinist

Sham.define do name { |index| "app #{index}"} end のような設定でindexが空白になっていた。深追いはしてないけどなんでだろう

cucumber-rails

rspec-railsと同様に、cucumberにもcucumber-railsがあった

gem listは名前を引数にとれる

このgemインストールしてたっけ? このgemのバージョンいくつだっけ? というときは gem list | grep hoge みたいにgrepしてたけど gem list hoge でいいみたいあと gem list hoge -d でそのgemの詳細情報も見れる

今週のrailscasts - Bundler

Railscasts - Bundler carlhuda's bundler at master - GitHub コマンド bundle install Gemfileに書かれた依存関係のgemをbundlerのリポジトリにインストールする。 既にsystem RubyGems リポジトリにインストールされていたら、再インストールされることは…

nested transaction

どんな機能か忘れてたけど下記のコード見て理解。requires_newは内側のtransactionだという印。 User.transaction do User.create(:username => 'Admin') User.transaction(:requires_new => true) do User.create(:username => 'Regular') raise ActiveReco…

Object#try

こういう小粋でいなせなメソッドは多用したいんだけどたいていすぐ忘れるRails 2.3 の Object#try は使う機会が多そう - takihiroの日記

Shared Example Groups

下記のようにshared_examples_forで定義したexample groupは、it_should_behave_likeメソッドを使うことで、複数の箇所で使い回せる。controllerのテストを書くときなどに使えそう(modelでは使う場面はないような気がする?) shared_examples_for "All Emplo…

contextメソッド

テストコードを見やすくするためのdescribeのエイリアス。 describe オブジェクトを指定 context コンテキストを指定

Rails3.0preをインストール

ほぼ下記エントリと同じ手順でインストール。ここまでは特に問題なし。How to Begin Playing With Rails 3でもscaffoldしてscript/serverしてアクセスしたら undefined method `from' for #<Arel::Project:0x103cf9fc8>でエラー。Gemfileを適当に編集して gem build したらindexは表示で</arel::project:0x103cf9fc8>…

今週のrailscasts - Nested Model Form Part 2

先週の続き。has_manyなどでネストされたモデルを一つのフォームで扱うためのaccepts_nested_attributes_forメソッドの使い方について。 Ajaxで動的にフォーム操作をするtipsの紹介。Railscasts - Nested Model Form Part 2prototype.jsを使って動的にテキス…

escape_javascript

改行 " ' をエスケープしてくれるメソッド。javascript実行部分にERbなどで何か文字列を埋め込むときに使う