週刊Railsウォッチ(20171222)定番gemまとめサイト、active_record-mtiでテーブル継承、PostgreSQL 10の非互換変更点、Railsガイド攻略法ほか

こんにちは、hachi8833です。Ruby 2.5リリースまでもう少しです。 Rails勉強会@東京 第93回に初参加させていただきました。2年半ぶりの開催だったそうです。 お知らせ: 年末年始にかけて週刊Railsウォッチをお休みいたします: 次回は1月12日です。 今年最後のRailsウォッチ、いってみましょう。 Rails: 今週の改修 今週の更新情報は多めなので選別してみました。 セキュリティ関連ヘッダーを追加 commit: 5d7b70 Add secure X-Download-Options and X-Permitted-Cross-Domain-Policies to default headers set. # actionpack/lib/action_dispatch/railtie.rb#26 config.action_dispatch.default_headers = { “X-Frame-Options” => “SAMEORIGIN”, “X-XSS-Protection” => “1; mode=block”, – “X-Content-Type-Options” => “nosniff” + “X-Content-Type-Options” => “nosniff”, + “X-Download-Options” => “noopen”, + “X-Permitted-Cross-Domain-Policies” => “none” } つっつきボイス: 「X-で始まるヘッダって確かIE向けがほとんどだったと思うはRFC定義されていない独自拡張を表している」「X-Download-Options(IE向け)はまだわかるけど、↓の良記事見るとFlashがらみのヘッダが目につくなー: Railsでそこまで手を回すのってどうなんだろ?」「secureheadersにもこのヘッダ入ってるんで、セキュリティ関係者が入れときたいと思ってるらしいことはワカッタ」「10月のウォッチで扱ったgemですね」 参考: 今夜つける HTTPレスポンスヘッダー (セキュリティ編) db.createのエッジケースを修正 PR: #31311 Ignore NoDatabaseError when loading schema cache スキーマキャッシュの読み込み時には現在のマイグレーションバージョンをフェッチする。 しかしデータベースが存在しない場合に接続を取れずにエラーになる。これはデータベース作成時に問題になる。 データベースがない場合はスキーマキャッシュは不要なのでエラーを無視するよう修正。 #31311より大意 # activerecord/lib/active_record/migration.rb#56 – def current_version(connection = Base.connection) + def current_version(connection = nil) + if connection.nil? + begin + connection = Base.connection + rescue ActiveRecord::NoDatabaseError + return nil + end + end ActiveStorage::Blobからvariantを削除 PR: #31319 Purge variants with their blobs # activestorage/app/models/active_storage/blob.rb#273 def delete – service.delete key + service.delete(key) + service.delete_prefixed(“variants/#{key}/”) if image? @kaspth つっつきボイス: 「variantって、作成した後削除し忘れてつまづきがちなやつ」「ところでblobって言葉ここに限らずいろんなところで見かけるんですが、どんな意味でしたっけ」「だいたいバイナリを表すことが多いっすね」「バイナリ・ラージ・オブジェクトの略なのか」「オブジェクト指向のオブジェクトではないw」 Railsのblobについての記述は以下にありました。 blobは、そのサービス上にあるファイルの位置を示すファイルとキーについてのメタデータを含むレコードです。 rails/activestorage/app/models/active_storage/blob.rbより大意 Railsの起動メッセージがきびきび表示されるようになった PR: #31434 Provide instant feedback when booting Rails 起動直後に=> Booting Railsを表示するようになりました。 # railties/lib/rails/generators/rails/app/templates/config/boot.rb.tt#3 require ‘bundler/setup’ # Set up gems listed in the Gemfile. require ‘bootsnap/setup’ # Speed up boot time by caching expensive operations. + +if %w[s server c console].any? { |a| ARGV.include?(a) } + puts “=> Booting Rails” … Continue reading 週刊Railsウォッチ(20171222)定番gemまとめサイト、active_record-mtiでテーブル継承、PostgreSQL 10の非互換変更点、Railsガイド攻略法ほか