我在rails应用程序中使用geoip gem,我需要访问geoip.dat文件,以获取ip数据。
GeoIP.new("geoip.dat")
在我的本地环境中,我可以从任何地方访问此文件,但是当我将它放在Heroku上时,我无法让它工作。我总是得到文件不存在的错误。我试着把它放在root,/ public,/ lib / assets中。
我做错了什么?
感谢。
答案 0 :(得分:2)
如果文件在您的公共目录中,您可以在Heroku上访问它。确保该文件位于public/geoip.dat
并确保它已提交并推送到Heroku。如果您在Mac上本地开发并推送到Heroku,请确保您具有完全文件名的大小写。这个案例在Mac上会被忽略,但在Heroku上会很重要。
您应该可以使用以下命令加载文件:
GeoIP.new(Rails.root + 'public/geoip.dat')
你可以在heroku上测试一下:
> heroku run console
Running `console` attached to terminal... up, run.3472
Loading production environment (Rails 4.0.0)
irb> File.exists?(Rails.root + 'public/geoip.dat')
=> true
irb> GeoIP.new(Rails.root + 'public/geoip.dat')
=> #<GeoIP:0x007f05a0215230 @mutex=#<Mutex:0x007f05a0215258>, @flags=0, @database_type=1, @record_length=3, @file=#<File:/app/public/geoip.dat>, @database_segments=[16776960]>