一度 xmpfilter に慣れてしまうともう後戻りはできない。そんな極一部の xmpfilter 中毒者が戸惑わないように Rails でも xmpfilter を使う方法を共有しときます。
shebang を #!rails runner
にするだけだったり、require のところでよかれと思って require_relative を使ったりするとうまくいきません。
次のように require で config/environment.rb を読み込み さえすれば、あとは小さなスクリプトのように扱えます。
RAILS_ROOT/bin/foo.rb
require File.expand_path('../../config/environment', __FILE__)
Article.count # => 10
SQLを確認したいときは次のようにログ出力を標準出力に向けて、色付けを無効にしておくとよいです。
RAILS_ROOT/bin/foo.rb
require File.expand_path('../../config/environment', __FILE__)
ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT)
ActiveSupport::LogSubscriber.colorize_logging = false
Article.count # => 10
# >> (0.3ms) SELECT COUNT(*) FROM `articles`
また有用な機能に発展して外部コマンドとしても利用したくなったら shebang に #!/usr/bin/env ruby
を追加します。
カレントディレクトリが Rails.root 直下じゃないと都合が悪いってときは require のあとで Dir.chdir Rails.root
とします。