2014-03-06 84 views
2

我在我的rails應用程序中使用geoip gem,我需要訪問geoip.dat文件才能獲取ip數據。在heroku上找不到文件

GeoIP.new("geoip.dat") 

在我的本地環境,我可以從任何地方訪問這個文件,但是當我把它在Heroku我只是不能得到它的工作。我總是得到文件不存在的錯誤。我試圖把它放在根目錄/ public,/ lib/assets中。

我在做什麼錯?

謝謝。

+0

你有沒有'混帳添加--all'? –

+0

我確定該文件已被推送到Heroku上。我也通過Heroku上的控制檯進行了檢查,文件在那裏。 –

回答

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]> 
+0

它的工作原理...它嘗試所有的東西來獲得根,但不是rails.root,它的工作原理。謝謝! –