Rails重载了gem

时间:2018-02-08 10:39:06

标签: ruby-on-rails ruby rubygems ruby-on-rails-5

我在这个项目中有一个项目和一个gems文件夹,我有一个名为ip_locator的gem。然后我有一个这样的课:

require 'singleton'
require 'maxminddb'

module IpLocator
  class Service
    include Singleton

    attr_reader :db

    def initialize
      @db = ::MaxMindDB.new('db/GeoIP2-Country.mmdb')
    end

    def locate(ip)
      db.lookup ip
    end
  end
end

我也在gem文件夹中对这个类进行了一些rspec测试。他们运行良好。另外,如果我运行./gems/ip_locator/bin/console我可以很好地与这个班级互动 但是当我尝试从Rails的上下文(转到根文件夹和rails console)运行这个类时,我得到了这个:

Errno::ENOENT: No such file or directory @ rb_sysopen - db/GeoIP2-Country.mmdb

我将此文件复制到我的ROOT / db而不是ROOT / gems / ip_locator / db并且它有效,所以我注意到Rails实际上期望此路径(db/GeoIp2)相对于项目根目录,它是没有从宝石加载。我该如何处理?

0 个答案:

没有答案