ruby rails_autolink不能加载的原因-阿里云开发者社区

开发者社区> 大熊猫侯佩> 正文

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模块中啊!遂写一个测试代码:

#!/usr/bin/ruby

module M
  module ::ActionView
    module Helpers
      module ::TextHelper
        def xxx
          puts "xxx"
        end
      end
    end
  end
end

然后执行 require './m.rb',然后使用ActionView::Helpers::TextHelper.instance_methods查看:

=> [:concat, :safe_concat, :truncate, :highlight, :excerpt, :pluralize, :word_wrap, :simple_format, :cycle, :current_cycle, :reset_cycle, :xxx, :raw, :safe_join]

发现xxx方法的确写入模块了!那么为毛auto_link无法写入呢?再看一下require 'rails_autolink'的开头包含代码,路径在gem which rails_autolink中:

module RailsAutolink
  class Railtie < ::Rails::Railtie
    initializer 'rails_autolink' do |app|
      ActiveSupport.on_load(:action_view) do
        require 'rails_autolink/helpers'
      end
    end
  end
end

傻了吧!人家是需要在ActiveSupport加载的时候啊!估计是注册一个回调函数然后等加载action_view的时候再加载吧?我用load 'active_support.rb'然后再试还是不行.

    解决办法有2个:

1.直接require 'rails_autolink/helpers'

2.在rails程序文件夹下使用rails console进入irb然后测试auto_link

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9529 0
react-native run-android报错的原因,license问题
react-native run-android报错的原因,license问题
3 0
react-native run-android报错的原因,SDK位置未指定
react-native run-android报错的原因,SDK位置未指定
11 0
UWP开发入门(十六)——常见的内存泄漏的原因
原文:UWP开发入门(十六)——常见的内存泄漏的原因   本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍。   内存泄漏的概念我这里就不说了,之前《UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏》中提到过,即使有垃圾回收机制,写C#还是有可能发生内存泄漏。
1174 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13223 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11541 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6934 0
一文分析 mp4对比m3u8 第一帧加载慢的原因
公司要求对视频的 秒开率(1秒内成功加载的播放数 / 播放总数)、失败率 (播放失败的次数 / 播放总数) 等进行优化。经过线上AB测试发现,`m3u8视频(第一段切片为1~3秒)`在秒开率、失败率等性能指标上均优于`普通mp4视频`。这里探究一下,m3u8视频(第一段切片为1~3秒) 在秒开率上均优于 普通mp4视频 的原因。
13 0
+关注
大熊猫侯佩
贪吃贪睡的大熊猫侯佩
689
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载