在heroku上找不到文件

时间:2014-03-06 17:24:50

标签: ruby-on-rails heroku

我在rails应用程序中使用geoip gem,我需要访问geoip.dat文件,以获取ip数据。

GeoIP.new("geoip.dat")

在我的本地环境中,我可以从任何地方访问此文件,但是当我将它放在Heroku上时,我无法让它工作。我总是得到文件不存在的错误。我试着把它放在root,/ public,/ lib / assets中。

我做错了什么?

感谢。

1 个答案:

答案 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]>