tonnyです。
最近はVue.js関連の記事を書いておりましたが、今回はRailsに関して困ったことを記載したいと思います。
割と短めです。
rails runner
コマンドは、Railsでバッチ処理する際に使用します。
すでに多くの方が記事にされておりますので、簡単にまとめたいと思います。
runner (リファレンス)
バッチファイルを作成します。
人や組織によるかと思いますが、lib/tasks
以下に作成することが一般的なようです。
簡単なバッチを作成します。
class Tasks::Test def self.execute p 'Test' end end
lib
はRailsで自動的にロードされないので、config/application.rb
に追記してあげます。
config.autoload_paths += Dir["#{config.root}/lib"]
これでパスに追加されたので、下記のコマンドで実行します。
$ ./bin/rails runner "Tasks::Test.execute" Test!!
config
に追記しているはずなのに、いつまでたっても`uninitialized constant`のエラーが消えません。
ちなみに、autoload_path
を確認するコマンドは下記になります。
$ ./bin/rails r 'puts ActiveSupport::Dependencies.autoload_paths'
結論からいうと、rails runner
コマンドの裏で動いているSpringが悪さをしていたようです。
こちらの記事を参考にさせていただきました。
rails runnerでconfig設定値が再読み込みされない問題の対処方法
$ Spring stop
詳細はよく分かっておりませんが、Spring経由で実行するとキャッシュ?されてしまうのかな、と思っています。
あまりやらないかもしれませんが、コマンドからバッチに引数を渡す場合は、""
で囲います。
$ ./bin/rails runner "Tasks::Test.execute('hogehoge')"
class Tasks::Test def self.execute(word) p word end end
今回はRailsのエラーに関する備忘録になります。
私自身が困ったエラーも今後はまとめていこうと思いますので、よろしくお願いします。