Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 Sinatra映像文件列表在本地主机上工作,但在测试服务器上不工作_Ruby_Sinatra_Thin - Fatal编程技术网

Ruby Sinatra映像文件列表在本地主机上工作,但在测试服务器上不工作

Ruby Sinatra映像文件列表在本地主机上工作,但在测试服务器上不工作,ruby,sinatra,thin,Ruby,Sinatra,Thin,下面的代码从public/images目录获取一个图像列表,创建一个哈希数组并将其转换为JSON,然后返回给调用方 这段代码在本地主机上运行得非常好——我可以根据需要获得图像名称列表 然后我将代码上传到我的VPS,并在同一个环境中运行,在瘦主机上运行,但没有返回任何内容。无论我做了什么更改,无论是获取文件名的路径还是方法,比如使用glob而不仅仅是Dir,我尝试的方法都无法奏效 以下是我使用Ajax从客户端JavaScript调用的路由中的代码: # get all images get '/d

下面的代码从public/images目录获取一个图像列表,创建一个哈希数组并将其转换为JSON,然后返回给调用方

这段代码在本地主机上运行得非常好——我可以根据需要获得图像名称列表

然后我将代码上传到我的VPS,并在同一个环境中运行,在瘦主机上运行,但没有返回任何内容。无论我做了什么更改,无论是获取文件名的路径还是方法,比如使用
glob
而不仅仅是
Dir
,我尝试的方法都无法奏效

以下是我使用Ajax从客户端JavaScript调用的路由中的代码:

# get all images
get '/debug/posts/images/' do
  puts '>> debug > posts > images > get'

  all_images = Array.new

    # build substitute prefix path 
  uri = URI(request.url)
  prefix ='http://' + uri.host
  if request.port
    prefix += ':' + request.port.to_s
  end
  prefix += '/content/'

  begin
    content_type :json
        # get list of images
    pics = Dir['public/images/*']
    pics.map { |pic|
            # build hash for use with tinyMCE
      pic.split('/')
      pic_hash = {:title => File.basename(pic).to_s, :value => prefix + File.basename(pic).to_s}
      all_images.push(pic_hash)
    }

        # convert to json
    pic_json = JSON.generate(all_images)    
    body(pic_json)
  rescue Sequel::Error => e
    puts e.message
    status(400).to_json
  end
end
我在本地主机上重新运行了一个值数组:

[ {title: "bear-love.jpg"value: "/content/bear-love.jpg"}, {title: "bear-love2.jpg"value: "/content/bear-love2.jpg"}...]
我从VPS获得一个空阵列:

[]
  • 检查服务器是否以具有读取和执行公共/图像权限的用户身份运行
  • 验证公共/图像是否存在
  • 验证公共/图像是否在您认为的位置

  • 事实证明,在服务器上获取当前路径更容易,只需获取我需要的图像文件名列表,然后添加前缀路径供浏览器使用。

    尝试使用权限是有意义的-public是提供文件的默认路径-我甚至不提供文件,只是文件名列表,所以可能需要读取权限问题2。三,。已经过验证,因为如果没有正确的结构,该站点将无法运行。不过,我会查看烫发,谢谢