如何在heroku服务器上运行系统命令?

时间:2017-03-17 09:35:39

标签: heroku

我正在使用OGR2OGR将geojson文件转换为dxf格式。 它正在本地服务器上工作,但在heroku服务器上它无法正常工作。 查找用于生成文件的代码:

          str2 = {
            "type":"FeatureCollection",
            "features":[
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@substation]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@feeder]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@form3]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@pdt_array]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@edt_array]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@composite_array]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@al_array]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@tp_array]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"Point","coordinates":[@ot_array]}},
                 {"type":"Feature","properties":{"color":"red"},"geometry":{"type":"LineString","coordinates":[@lt_array,@ht_array,@consumer_array]}}
               ]}

   path = "#{Rails.root}/public/data.geojson"
   File.open(path, "w+") do |f|
     f.write(JSON.pretty_generate(str2))
   end
   system("ogr2ogr -f DXF #{Rails.root}/public/delhiii.dxf  #{Rails.root}/public/data.geojson")

1 个答案:

答案 0 :(得分:0)

Heroku不允许您将文件直接保存到其文件系统中。有一个名为Ephemeral filesystem的东西,但它不可靠。我建议使用S3来保存文件。

此外,Heroku不允许您安装外部库(ogr2ogr)。有时候你可以获得带有二进制文件的宝石(比如wkhtmltopdf-binary gem),但我找不到ogr2ogr的解决方案。