插件扩展(2)

ruby:1.9.2

rails3.0.3

 

学习编写插件的这个过程中,自动引入plugin中的models, controllers等组件的过程中,加入以下代码出现这样的问题

http://guides.rubyonrails.org/plugins.html#models

 

加入代码:

%w{ models }.each do |dir|
  path = File.join(File.dirname(__FILE__), 'app', dir)
  $LOAD_PATH << path
  ActiveSupport::Dependencies.load_paths << path
  ActiveSupport::Dependencies.load_once_paths.delete(path)
end

 

问题:

/root/NetBeansProjects/rails-demo/vendor/plugins/yaffle/lib/yaffle.rb:10:in `block in <top (required)>': undefined method `load_paths' for ActiveSupport::Dependencies:Module (NoMethodError)
        from /root/NetBeansProjects/rails-demo/vendor/plugins/yaffle/lib/yaffle.rb:5:in `each'
        from /root/NetBeansProjects/rails-demo/vendor/plugins/yaffle/lib/yaffle.rb:5:in `<top (required)>'
        from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
        from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `block in require'
        from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:227:in `load_dependency'
        from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
        from /root/NetBeansProjects/rails-demo/vendor/plugins/yaffle/rails/init.rb:2:in `block in <class:Plugin>'
 

 

没有找到load_paths方法,最后在源代码中查看,没有发现load_paths与load_once_paths方法。这两个方法是在2.3.5的版本中发现了,是不是升级到3.0.3的时候,给删除了。

 

在3.0.3中,使用了autoload_paths与load_once_paths,这是前两个方法的替换方法。把代码换成以下代码就通过测试了

%w{ models }.each do |dir|
  path = File.join(File.dirname(__FILE__), 'app', dir)
  $LOAD_PATH << path
  ActiveSupport::Dependencies.autoload_paths << path
  ActiveSupport::Dependencies.autoload_once_paths.delete(path)
end

 

 

[1]http://guides.rubyonrails.org/plugins.html#models

[2]http://rubydoc.info/docs/rails/3.0.0/frames

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值