我在我的rails應用程序中使用geoip gem,我需要訪問geoip.dat文件才能獲取ip數據。在heroku上找不到文件
GeoIP.new("geoip.dat")
在我的本地環境,我可以從任何地方訪問這個文件,但是當我把它在Heroku我只是不能得到它的工作。我總是得到文件不存在的錯誤。我試圖把它放在根目錄/ public,/ lib/assets中。
我在做什麼錯?
謝謝。
我在我的rails應用程序中使用geoip gem,我需要訪問geoip.dat文件才能獲取ip數據。在heroku上找不到文件
GeoIP.new("geoip.dat")
在我的本地環境,我可以從任何地方訪問這個文件,但是當我把它在Heroku我只是不能得到它的工作。我總是得到文件不存在的錯誤。我試圖把它放在根目錄/ public,/ lib/assets中。
我在做什麼錯?
謝謝。
如果該文件在您的公共目錄中,您可以在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]>
它的工作原理...它嘗試所有的東西來獲得根,但不是rails.root,它的工作原理。謝謝! –
你有沒有'混帳添加--all'? –
我確定該文件已被推送到Heroku上。我也通過Heroku上的控制檯進行了檢查,文件在那裏。 –