Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在heroku上找不到文件_Ruby On Rails_Heroku - Fatal编程技术网

Ruby on rails 在heroku上找不到文件

Ruby on rails 在heroku上找不到文件,ruby-on-rails,heroku,Ruby On Rails,Heroku,我正在rails应用程序中使用geoip gem,我需要访问geoip.dat文件以获取ip数据 GeoIP.new("geoip.dat") 在我的本地环境中,我可以从任何地方访问此文件,但当我将其放在Heroku上时,我就是无法使其工作。我总是得到文件不存在的错误。我试着把它放在根目录下,/public,/lib/assets 我做错了什么 谢谢。如果文件在您的公共目录中,您可以在Heroku上访问它。确保文件位于public/geoip.dat中,并确保它已提交并推送到Heroku。如果

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

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]>
heroku运行控制台 正在运行连接到终端的“控制台”。。。起来,跑 加载生产环境(Rails 4.0.0) irb>File.exists?(Rails.root+'public/geoip.dat') =>正确 irb>GeoIP.new(Rails.root+'public/GeoIP.dat') => #
您是否添加了git--all?我很确定该文件已推送到Heroku上。我还通过Heroku上的控制台进行了检查,文件就在那里。它工作了…它尝试了各种方法来获取根,但没有rails.root,它工作了。谢谢