Ruby
Rails
Rails6

Rails6 のちょい足しな新機能を試す17(bin/rake dev:cache編)


はじめに

Rails 6 に追加されそうな新機能を試す第17段。 今回のちょい足し機能は、 bin/rake dev:cache 編です。

Rails 6.0 では bin/rake dev:cache を実行すると DEPRECATION WARNING が出力されるようになりました。

記載時点では、Rails は 6.0.0.rc1 で確認しました。Rails 6.0.0.rc1 は gem install rails --prerelease でインストールできます。

$ rails --version

Rails 6.0.0.rc1


おことわり

ここでは、 bin/rake dev:cache ( bin/rails dev:cache ) の機能については、触れません。

機能については、「 Railsのフラグメントキャッシュについて調べてみた 」を参照してください。


Railsプロジェクトを作る

$ rails new sandbox_6_0_0rc1

$ cd sandbox_6_0_0rc1


bin/rake dev:cache を実行する

$ bin/rake dev:cache

Running via Spring preloader in process 452
Development mode is now being cached.


log/develpment.log を確認する

log/development.log を確認するとワーニングが出力されていることがわかります。

DEPRECATION WARNING: Using `bin/rake dev:cache` is deprecated and will be removed in Rails 6.1. Use `bin/rails dev:cache` instead.

(called from block in execute at /usr/local/lib/ruby/gems/2.6.0/gems/rake-12.3.2/lib/rak/home/suke/mywork/learning/javascript/react-udemy/songs/src/reducers/


ちょっと思ったこと

このワーニングは、使い道から考えると、ログじゃなくてコンソールに警告が出てくれた方が良いような気がしないでもないです。

こんな感じになっている方が良さそうな気が(もっとシンプルに書ける方法がありそうな気がしますが、すぐに見つけられませんでした。 logger を書き変えて出力先を変更するとかできるのかな... :thinking: )。


railties/lib/rails/tasks/dev.rake

namespace :dev do

task cache: :environment do
old_behavior = ActiveSupport::Deprecation.behavior
begin
ActiveSupport::Deprecation.behavior = :stderr
ActiveSupport::Deprecation.warn("Using `bin/rake dev:cache` is deprecated and will be removed in Rails 6.1. Use `bin/rails dev:cache` instead.\n")
ensure
ActiveSupport::Deprecation.behavior = old_behavior
end
Rails::Command.invoke "dev:cache"
end
end


参考情報