List of rails

Rails.cache の動作をログに出力する方法

Published at: 2021/09/22

Rails.cache は、もろもろのキャッシュのための機能を提供しているが、その挙動がおかしいときには、デバッグをしたくなる。 その際、どうやってログを仕込んだら良いのかが、少なくとも公式のドキュメントには記載がなかったので、そのメモ。ActiveSupport::Cache::Store.logger = Rails.loggerこのようなコードを、例えば config/initializers/cache.rb…

`Rails.cache.clear` で FileStore のキャッシュが削除されなかった話

Published at: 2021/09/11

問題capistrano でのデプロイの度に、 Rails.cache.clear を実行していたのだけれども、ActiveSupport::Cache::FileStore のファイルが 削除されていないことがあったりしたので、その原因を調査した際の備忘録。原因def clear(options = nil) root_dirs = (Dir.children(cache_path) - GITKEEP_FILES) FileUtils.rm_r(root_dirs.collect { |f| File.join(cache_path, f) }) rescue Errno::ENOENT, Errno::ENOTEMPTY end(出典: https://github.com/rails/rails/blob/f1a684ce9964f…

ActiveAdmin で日付カラムのデフォルトを datepicker にする方法

Published at: 2021/04/27

問題ActiveAdmin では、日付カラムはデフォルトでは :date_select が利用され、結果として年/月/日のフィールドが別々になってしまう。form do |f| f.semantic_errors f.inputs do f.input :some_date, as: :datepicker f.input :other_field # ... end f.actions endと、 as: :datepicker を付与すれば datepicker…

複雑な join を scope で記述するプラクティス

Published at: 2020/01/08

rails では、 ON 区を自前で記述するタイプの join を実行するためには、 これはその join 節を自分で文字列として記述しなければならない。また、複雑な join 節が複数の箇所に散逸して行くのは、 ロジックが凝縮されていない感じになり、あまりうまくいかない。…

Rails の Migration で「Lost connection to MySQL server during query」と言われた際の対処方法

Published at: 2019/03/13

TL; DRread_timeout: タイムアウト秒数を config/database.yml に書く。詳細Lost connection to MySQL server during queryと言われながら、Rails で MySQL の既存の(巨大な)テーブルに index を追加する migration が失敗した。 ので、その原因を調査した際のメモ。 いろいろな情報がすごくミスリーディングだったりするので、ここにまとめを作っておく。まず、 MySQL サーバーはコネクションに対して、それがとてつもない Slow Query だったからといって、勝手に abort したりするようなことはしない。 …

You should not use `dbi` gem in Rails project.

Published at: 2019/02/25

TL; DRYou should not use dbi gem inside Rails project.Otherwise, you'll get an error something like:{:sanitize_conditions=>:sanitize_sql} is not a symbol nor a stringDescriptionIn Daru, it seems to support Daru::DataFrame#write_sql method, which seems to support data insertions from Dataframe according to the doc. …