我在这个项目中有一个项目和一个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
)相对于项目根目录,它是没有从宝石加载。我该如何处理?