Emacs
Rails
xmp
rcodetools
xmpfilter

RailsでEmacsのxmp(rcodetools/xmpfilter)を使う方法

一度 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 とします。