こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

gem内部での$LOAD_PATHの制御

特定のrailsのgemにさらに機能を追加してくて、新しくgemを作成しました。

gemはtypusというgemです。
https://github.com/typus/typus

これの、gemの中でautoloadされているhelper関数を拡張したいと思っています。
問題はそのためのgemの作り方で、helper関数はautoloadされるので、モンキーパッチングの適応が出来ません。

なので、typusのhelper関数よりも前に、拡張を行うgemの方で、拡張済のhelperを読み込む様にしないといけません。
そうなると、$LOAD_PATHの中で確実にtypusよりも、拡張gemの方が先に参照できる様にしないといけないのですが
普通これはどうすでばいいのでしょうか?

通常はgemspecファイルの中で、次の様に書かれて、これで制御されているので、書かれた順によると思うのです。

$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

投稿日時 - 2016-09-27 14:20:45

QNo.9234955

すぐに回答ほしいです

質問者が選んだベストアンサー

initializeの方でどうにかなったりしないのですかね?
auto loadで実際に読み込むタイミングって最初に必要になったタイミングですよね?

投稿日時 - 2016-09-27 17:24:18

補足

青い羊さん、ありがとうございます。

initializeと言うのが、どれのinitializeなのか次第です。
railsのinitializeであれば、ここで先に読み込んでしまうとautoloadの良さを消してしまいますし、helper関数はmoduleなのでinitializeは呼べないので、Gemで読み込み順を制御する方法は、対象次第です。

投稿日時 - 2016-09-29 11:59:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問