Ruby 2.3.1如何在config.rb中设置项目根目录

时间:2018-07-27 18:39:55

标签: ruby sinatra rsolr

我在Ruby 2.3.1中有一个项目,目前正在使用我要上传文件的文件夹的绝对路径。我想使用的是相对路径。 我想知道如何在Ruby config.rb中设置根目录/,这样当我需要文件夹的相对路径时可以调用 root_dir +'/ public /文件'

该项目是一个Ruby RESTFull API,可与Solr一起使用以进行索引/搜索PDF文件。该应用程序是Sinatra和Rsolr的自定义应用程序。 该API具有指向文件夹的上传功能。

我的上传脚本:

post '/api/uploads' do
  #puts params
  fns = params['files'].map {|f| f[:filename]}.join(";")
  param = fns.chomp.split(";")
  #find pdf files
  param.select! {|f| f =~ /.*\.pdf/}

  array_length = param.length # or $param.size

  puts "length of $param is : #{array_length}"

  if(array_length==0)
    raise( "files not pdf: #{fns}")
  end
  i = 0
  resp = []
  while i.to_i < array_length do
    puts i
    filename = params[:documents][i][:filename]
    tmpfile = params[:documents][i][:tempfile]
    target = settings.homedir+'/'+filename
    localpath = File.join(settings.filesdir, filename)
    File.open(localpath, 'wb') do |f|
      f.write tmpfile.read
    end

    resp << {:fileurl => target}
    i = i + 1
  end

我的config.rb:

set :root, File.dirname(__FILE__)
    set :filesdir, 'absolute_path/public/documents/pdf' # Set pdf files folder absolute path
    set :homedir, '/pdf'                         # Set pdf home directory
    set :solrbase, 'http://localhost:8983/solr/' # Set Solr connection path
    set :solrcore, 'docs'                        # Set name of the Solr core


    set :bind, '0.0.0.0'
    set :port, 3003                              # Set port of the API

    set :show_exceptions, false

    configure do
        mime_type :pdf, 'application/pdf'
  end

我不想写绝对路径并获得相对路径,例如,另一个开发人员可以立即使用它,而无需再次设置绝对路径。

0 个答案:

没有答案