LoginSignup
2
1

More than 3 years have passed since last update.

Railsのautoload_pathの中身を表示する

Posted at

Railsでautoloadパスを追加

appの下にserviceクラスを作った時など、application.rbconfig/application.rbを追加した。

config/application.rb
config.autoload_paths += %W(
  #{config.root}/lib/
  #{config.root}/app/services/
)

ただし、実際これでちゃんと読み込めているのか不安になる。
今まではわざわざconsoleでlibの下などの関数が動くか試していた。

ActiveSupport::Dependenciesを呼び出す

gem active_supportの中のmodlue ActiveSupport::Dependenciesのコードを見てみると、

mattr_accessor :autoload_paths, default: []

とあり、外部からautoload_pathsにアクセスできる。これをconsoleで呼び出せば、autoload_pathの中身が見れるようだ。


[1] pry(main)> ActiveSupport::Dependencies.autoload_paths
=> ["/var/www/{service_name}/lib/",
    "/var/www/{service_name}/app/services/",
    "/var/www/{service_name}/app/assets",
    "/var/www/{service_name}/app/controllers",
    "/var/www/{service_name}/app/controllers/concerns",
    "/var/www/{service_name}/app/helpers",
    "/var/www/{service_name}/app/jobs",
    "/var/www/{service_name}/app/models",
    "/var/www/{service_name}/app/models/concerns",
    "/bundle/gems/devise-4.6.2/app/controllers",
    "/bundle/gems/devise-4.6.2/app/helpers",
    "/bundle/gems/devise-4.6.2/app/mailers",
    "/bundle/gems/activestorage-5.2.3/app/assets",
...

これで毎回関数を呼ばずにちゃんと読み込まれていることがわかる。安心安心。

備考

configの設定を変えた後は、consoleでreload!をしても反映されない。
application.rbを変更した後は再度rails cする必要がある。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1