【问题标题】:Gem available in irb but not rails consoleGem 在 irb 中可用,但在 rails 控制台中不可用
【发布时间】:2011-01-30 19:37:47
【问题描述】:

我正在尝试在我的 rails 项目中使用 RedCloth gem。当我使用 irb 时,我可以加载 gem:

require 'rubygems'
require 'RedCloth'

它工作正常,但是当我在 rails 控制台中尝试相同的操作时,我收到一条错误消息,指出找不到 gem。

有人知道是什么原因造成的吗?

【问题讨论】:

    标签: ruby-on-rails ruby gem


    【解决方案1】:

    您可以将 gem 路径附加到 ruby​​ 加载路径。这样做:

    gem which faker
    => /usr/local/ruby/......../faker-0.1.1/lib/faker.rb
    

    启动 Rails 控制台并执行以下操作:

    $: << '/usr/local/ruby/......../faker-0.1.1/lib/'
    

    现在加载faker gem

    require 'faker'
    => true
    

    【讨论】:

    • 不错的 hack。感谢分享。
    • 不错的解决方法。只是为了让我更好地理解,您是否有理由不能默认需要 rails console 内的 gemset/gem 目录中已经存在的任何 gem?
    • $: 表示 Rails 从 Gemfile 获取的加载路径。它与$LOAD_PATH 全局相同。因此,这种技术将我们想要的新路径作为其最后一个元素放入加载路径数组中。
    • rails 6:require 'faker' 返回 false,require '/usr/local/ruby/......../faker-0.1.1/lib/' => true
    【解决方案2】:

    您的 Rails 项目的 Gemfile 中是否包含 gem 'RedCloth'? Rails 只会加载该文件中指定的 gem。

    【讨论】:

    • 天哪——我太傻了。这在当前版本的 Rails(Rails 3?)中显然是新的——我上次使用 Rails 时肯定不是这样。
    • 具体来说,它是一个捆绑器,Rails 3 使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2011-05-11
    • 1970-01-01
    • 2013-06-08
    • 2013-10-27
    相关资源
    最近更新 更多