2014/04/16分のコミットです。
ActiveRecordにLike構文のエスケープ処理用のsanitize_sql_likeというメソッドが追加されています。
Merge pull request #14745 from razum2um/plain-text-diagnostics
ActionController errors以外のエラーがcontrollerで発生した場合のエラーの見せ方を変更しています。
<header>
<h1>
RuntimeError
</h1>
</header>
<div id="container">
<h2>puke!</h2>
Rails.root: unset
Application Trace
/Users/razum2um/Code/rails/actionpack/test/dispatch/debug_exceptions_test.rb:60:in `call'
/Users/razum2um/Code/rails/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
修正されているのはtext.erbだけなので、想定しているのはXMLHttpRequestでリクエスト投げた際のエラーですね。
元となったPRを見る限り、Chromeのデバッガーで見た時に見やすくなるように、との事のようです。
Set _after_create_counter_called flag to make update counter cache work
昨日あったcounter cacheのリファクタリングの続きです。
_create_record実行時に、counter_cache用のフラグに値を設定しています。
Restore the destroy_by_association check in post destroy counter cache
こちらもcounter_cacheのリファクタリングの続きです。
association先でデータが削除されたかチェックして、チェックOKなら、counter_cacheの値をデクリメントしている、ような…。
Hide BelongsToAssociation#increment_counters and #decrement_counters
内部用メソッドである、BelongsToAssociation#increment_countersと#decrement_countersにnodocを入れています。
PostgreSQLで型にuuidを指定した場合に、defaultの値をクオートしないように対応しています。
def change add_column :reservation_requests, :thingy, :uuid, null: false, default: "uuid_generate_v4()" change_column :reservation_requests, :id, :uuid, null: false, default: "uuid_generate_v4()" end
マイグレーションファイルに上記のように記述した場合、"uuid_generate_v4()"という文字列としてSQLが実行されてしまい、SQLエラーが発生してしまうようです。
defaultにSQLの関数を指定出来るのは知りませんでした。これだと、確かにUUIDを使う際に便利そうです。
Add CHANGELOG entry for #14766 [ci skip]
上記uuidをクオートしないコミットについてCHANGELOGに追記しています。
Update AC::Metal documentation example [ci skip]
ActionController::Metalのexampleを修正しています。 修正内容は下記の通りです。
- # include ActionController::Rendering + # include AbstractController::Rendering + # include ActionView::Layouts
ActionViewがActionPackから除かれたので、append_view_pathメソッドを使うためにはActionView::Layoutsクラスが、renderするためには、ActionView::Layoutsクラスのincludeがそれぞれ必要になっています。
activesupport/lib/active_support/core_ext/object/duplicable.rbへのコメント追加、及びテストコードの整理が行われています。
BigDecimalはruby 1.9.3系ではdup出来ないのでチェック処理が行われている、という旨コメントが追加されています。
[ci skip] Avoid suggesting dangerous code in i18n guide
rails guideの修正。18n guideの部分で、to_symを使っている箇所を修正しています。
RubyのSymbolオブジェクトはGCで回収されないので、大量にSymbolオブジェクトを生成させると、サービス不能に陥る可能性があります。
で、対象のguideの部分は、外部で設定された値をto_symしており、サービス不能攻撃となる可能性があるので修正されています。
SQL Like escaping helper method. [Rob Gilson & Yves Senn]
SQLのLIKE構文の為のsanitize_sql_likeというエスケープ用のメソッドが追加されました。
# Example
class Article
def self.search(term)
where("title LIKE ?", sanitize_sql_like(term))
end
end
Article.search("20% _reduction_")
# => Query looks like "... title LIKE '20\% \_reduction\_' ..."
これは嬉しい。手でエスケープ処理を行う必要がなくなります。
NullRelationでは、sumメソッドは強制的に0をreturnしていたのですが、groupメソッドが呼ばれた場合は、空のHashをreturnするように修正しています。地味にバグ修正です。
Merge pull request #11836 from mcfiredrill/engines-testing-doc
rails guideの修正。 Functional testsをする際の説明を追加しています。
Functional testsをする際、@routesにEngine.routesを設定してあげる事で、urlのヘルパーメソッドを呼ぶことが出来る、という説明です。
setup do @routes = Engine.routes end
sanitize_sql_like escapes escape_character not only backslash.
少し上のコミットで追加されたsanitize_sql_likeのテストコードの追加です。バックスラッシュ以外の文字をエスケープするパターンのテストを追加しています。