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
のテストコードの追加です。バックスラッシュ以外の文字をエスケープするパターンのテストを追加しています。