天天看點

ruby rails_autolink不能加載的原因

    從rails 3.1.0開始,預設在actionview::helper::texthelper中的auto_link方法已經被移除,放到了第三方的gem裡:rails_autolink.遂想試一下其功能,于是将rails_autolink寫入rails程式中的gemfile中,使用bundle install下載下傳安裝.打開irb,依次輸入如下指令:

require "rails"

require 'action_view'

require 'rails_autolink'

include actionview::helpers::texthelper

可以無法找到方法auto_link哦!檢視rails_autolink中的helper.rb源代碼檔案,看到其是将auto_link放入了texthelper子產品中啊!遂寫一個測試代碼:

然後執行 require './m.rb',然後使用actionview::helpers::texthelper.instance_methods檢視:

發現xxx方法的确寫入子產品了!那麼為毛auto_link無法寫入呢?再看一下require 'rails_autolink'的開頭包含代碼,路徑在gem which rails_autolink中:

傻了吧!人家是需要在activesupport加載的時候啊!估計是注冊一個回調函數然後等加載action_view的時候再加載吧?我用load 'active_support.rb'然後再試還是不行.

    解決辦法有2個:

1.直接require 'rails_autolink/helpers'

2.在rails程式檔案夾下使用rails console進入irb然後測試auto_link