やったこと
runnerコマンドを使うと、非対話的にRailsの文脈でRubyのコードを実行することができます。たとえば次のようになります。
シェルのコマンドで、Rails のメソッドを使ってみます。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
$ rails --version
Rails 6.0.3.2
調査
実行するコードをそのまま渡す
$ rails runner 'puts Rails.env'
出力
Running via Spring preloader in process 37027
development
外部ファイルを実行してみる
lib/hoge.rb
class Sample
def self.hello
puts 'called: hello'
puts Rails.env
end
end
Sample.hello
出力
$ rails runner lib/hoge.rb
Running via Spring preloader in process 38718
called: hello
development