/ / ruby​​-on-rails、ruby、ruby-on-rails-4、monkeypatching / Railsブートストラップの宝石のMonkeypatchingメソッドが動作しない

Ruby-on-rails、ruby、ruby-on-rails-4、monkeypatching、Railsのブートストラップの宝石のMonkeypatchingメソッドが動作しない

私は優れた twitter-bootstrap-rails 宝石。その宝石には助手がいます(NavbarHelper)これはRubyヘルパーを使ってBootstrap navbarsを生成するために使われます。私はドロップダウンリストが "コツを持っていないように宝石を猿のパッチにしたい。

そこで、私はソースを調べ、関連する方法を見つけました ここに。私がしなければならないのは、それを無効にすることだけです。 config / initializersで新しいファイルを作成しました。 navbar.rb 以下の内容で

NavbarHelper.module_eval do
def name_and_caret(name)
"HELLO WORLD"
end
end

おそらく、ドロップダウンタイトルのすべて私のアプリで "HELLO WORLD"と表示されるべきです(宝石のソースによって参照されるように)。しかし、これは起こっていないし、宝石はまったくmonkeypatchedようには表示されません。

私は置くことを試みた puts NavbarHelper.methods - Object.methods イニシャライザファイルには結果、私はRailsがイニシャライザの前に宝石を正しくロードしていないと思うようになります。私はまた、宝石がヘルパーにオートロードを使用していないことを確認し、確認しました。

編集

これを複雑にしているのは、私の Gemfile 以下の方法で宝石を含みます:

gem "twitter-bootstrap-rails", git: "git://github.com/seyhunak/twitter-bootstrap-rails.git", branch: "bootstrap3"

私はこの特定のバージョン管理がmonkeypatchingが機能しないことを意味するのかどうかわかりません。

編集#2

私のシステムには宝石のバージョンが1つしかないようですので、問題はないと思います。また、私は、 require "twitter-bootstrap-rails イニシャライザファイルの先頭には結果が表示されません。

回答:

回答№1は1

問題は、このモジュールのメソッドにパッチを当てるが、モジュールはすでにこの時点で含まれているということです。 application_helper.rbでこれを定義してみてください

def name_and_caret(name)
super("blub #{name}")
end