Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 Rails3:静态地提供不在“中”的文件;公共/";_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails3:静态地提供不在“中”的文件;公共/";

Ruby on rails Rails3:静态地提供不在“中”的文件;公共/";,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,如果文件不在“public/”目录中(出于充分的理由),如何以正确的内容类型标题静态地提供文件?请参阅 模块MyApp 类应用程序['/my secret dir'], :root=>'my/secret/dir' 结束 结束 Rails有一种方法可以做到这一点如果我想动态地为它提供服务怎么办?然后按照Gareth的指示使用send_file。请记住,通过启动Rails请求来提供静态文件是可行的,但会占用大量开销。是的,这显然会通过Rails堆栈运行所有内容,因此,只有在必要时才这样做-例如,您

如果文件不在“public/”目录中(出于充分的理由),如何以正确的内容类型标题静态地提供文件?

请参阅

模块MyApp
类应用程序['/my secret dir'],
:root=>'my/secret/dir'
结束
结束

Rails有一种方法可以做到这一点

如果我想动态地为它提供服务怎么办?然后按照Gareth的指示使用
send_file
。请记住,通过启动Rails请求来提供静态文件是可行的,但会占用大量开销。是的,这显然会通过Rails堆栈运行所有内容,因此,只有在必要时才这样做-例如,您需要基于动态身份验证下载。是的,我知道开销。但是我想不出更好的办法来解决我的问题。我正在构建一个带有基于文件的模板系统的小型CMS,每个模板都可以有自己的公共目录,因此使用哪个公共目录取决于模板设置。我需要管理系统的普通公用目录。使用XSendFile避免在文件传输时加载Rails堆栈。您可以设置控制器操作,该操作将捕获到“/public/template/:id/:filename”中的路由。只有当路径指定的文件不存在时,才会调用此操作,然后它可以生成文件并将其放置在那里。后续访问将直接命中资产。我个人使用它动态生成图像缩略图。
module MyApp
  class Application < Rails::Application
    config.middleware.use Rack::Static,
      :urls => [ '/my-secret-dir' ],
      :root => 'my/secret/dir'
  end
end