We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cookpad_all では Rails 6.0 で zeitwerk を使っている状況で Chanko を使っています。 また Chanko::Config の設定については config/initializers 以下に Chanko 用のファイルを用意してそこで各種値を設定しており、そこで unit を置くディレクトリを Chanko::Config.units_directory_path = "app/extensions" で変更しています。
Chanko::Config
config/initializers
Chanko::Config.units_directory_path = "app/extensions"
上で設定した units_directory_path が反映されず、デフォルトである app/units で固定されてしまいます。
units_directory_path
app/units
Chanko::Config は一度 units_directory_path を読み出そうとしたタイミングで現在の @units_directory_path の値をキャッシュしています。
@units_directory_path
chanko/lib/chanko/config.rb
Lines 34 to 36 in f6fdda4
また、zeitwerk 環境下では以下のコードにより before: :set_autoload_paths のタイミングで Chanko::Loader.prepare_eager_load が呼び出されます。これは initializers 以下のコードが実行されるよりも前のタイミングです。
before: :set_autoload_paths
Chanko::Loader.prepare_eager_load
initializers
chanko/lib/chanko/railtie.rb
Lines 18 to 22 in f6fdda4
この prepare_eager_load の中で Chanko::Config::units_directory_path が読み出されているんですが、その時点ではまだ units_directory_path がデフォルト値なのでそちらの値でパスが固定されます。
prepare_eager_load
Chanko::Config::units_directory_path
chanko/lib/chanko/loader.rb
Line 46 in f6fdda4
@resolved_units_directory_path
units_directory_path=(path)
The text was updated successfully, but these errors were encountered:
ありがとうございます。意図通りではないのでバグです。着手に少し時間がかかると思いますが、状況を理解し対応方法を考えます。
Sorry, something went wrong.
ありがとうございます!
No branches or pull requests
背景
cookpad_all では Rails 6.0 で zeitwerk を使っている状況で Chanko を使っています。
また
Chanko::Config
の設定についてはconfig/initializers
以下に Chanko 用のファイルを用意してそこで各種値を設定しており、そこで unit を置くディレクトリをChanko::Config.units_directory_path = "app/extensions"
で変更しています。問題
上で設定した
units_directory_path
が反映されず、デフォルトであるapp/units
で固定されてしまいます。原因
Chanko::Config
は一度units_directory_path
を読み出そうとしたタイミングで現在の@units_directory_path
の値をキャッシュしています。chanko/lib/chanko/config.rb
Lines 34 to 36 in f6fdda4
また、zeitwerk 環境下では以下のコードにより
before: :set_autoload_paths
のタイミングでChanko::Loader.prepare_eager_load
が呼び出されます。これはinitializers
以下のコードが実行されるよりも前のタイミングです。chanko/lib/chanko/railtie.rb
Lines 18 to 22 in f6fdda4
この
prepare_eager_load
の中でChanko::Config::units_directory_path
が読み出されているんですが、その時点ではまだunits_directory_path
がデフォルト値なのでそちらの値でパスが固定されます。chanko/lib/chanko/loader.rb
Line 46 in f6fdda4
確認したいこと
@resolved_units_directory_path
に一度値が入ってしまった場合、@units_directory_path
にいくら値を入れても Chanko で利用するパスは変更できないので、units_directory_path=(path)
で@resolved_units_directory_path
が nil でないときに例外を吐くなどをしたい。The text was updated successfully, but these errors were encountered: