我的根是site/home/ubuntu/workspace/
workspace/
内访问文件(来自浏览器的HTTP请求),而无需配置路由和控制器?答案 0 :(得分:0)
我有这个结构:
# /home/username/Workspace/rails_project/app/controllers/application_controller.rb
require "#{Rails.root}/../test.rb
和
# /home/username/Workspace/test.rb
# Some ruby code
如您所见,test.rb
文件位于RubyOnRails项目之外。
出于安全原因,您无法在不定义路径的情况下从URL访问项目轨道外的文件。您可以做的是指向控制器的路径,该路径基于url提供的文件名,需要在rails项目之外的文件。
# /home/username/Workspace/rails_project/config/routes.rb
get '/get_file/:file_name', to: 'files#show'
# /home/username/Workspace/rails_project/app/controllers/files_controller.rb
class FilesController < ApplicationController
def show
document = params[:file_name]
send_data "#{Rails.root}/../#{document}, filename: document
end
end
有关详细信息,请参阅: http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data
答案 1 :(得分:0)
您可以像这样访问文件的路径:
File.expand_path("somestuff.rb", "~/workspace")
对我来说,这段代码产生的路径如下:
"/home/foodie/workspace/somestuff.rb"
答案 2 :(得分:0)
如果不配置路由和控制器,客户端只能访问public/
目录中的文件(扩展名是什么并不重要)。
请记住:当您的Rails应用程序由Web服务器运行时,其webroot将成为公共目录,因此访问public/file.ext
您请求的应该是webroot/file.ext