rails runner コマンドを使うと、各modelsとか、config.autoload_pathsに指定したファイルとかをロードした上でスクリプトを実行できる。
$ rails runner hoge.rb
ただ、毎回 rails runner とか書くのはだるいので、hoge.rbを独立したスクリプトにしちゃいたい。
そんなときは下みたいに書くと、rails runnerと同等の環境をロードした状態にできる。
#!/usr/bin/env ruby require File.expand_path('../../config/application', __FILE__) Rails.application.require_environment! # 以下、いつものようにスクリプトを書く
これをscript/ 以下とかに配置すればいける。
ついでにいうと、thorを組み合わせると便利な感じになる。
#!/usr/bin/env ruby require File.expand_path('../../config/application', __FILE__) Rails.application.require_environment! require "thor" class CLI < Thor desc "hello", "say hello" def hello puts "hello world!" end end CLI.start
(この例だとhelloの中でrails関係のファイルを使ってないから意味ないんだけど、まあやりたいことは伝わりますよね)
$ script/hoge hello hello world!
こんな感じでオレオレコマンドを作れるし便利。
結論
rakeでやれ