Задать вопрос
  • Файлообменник ruby помощь в нахождении ошибки?

    @Zybasstik Автор вопроса
    Спасибо, да вы правы. Поставил в Config.ru и оно вроде как запустилось. Лог показал:
    >> Writing PID to /home/administrator/web/tmp/thin.pid
    >> Thin web server (v1.3.1 codename Triple Espresso)
    >> Maximum connections set to 1024
    >> Listening on 192.168.0.14:4567, CTRL+C to stop

    Но при попытке клиента подключиться вываливается ошибка:
    !! Unexpected error while processing request: uninitialized constant Rack::MethodOverride::REQUEST_METHOD

    Пока что сам смотрю... но если у кого есть идеи... рад услышать.
    В итоге нашёл файл list.haml думаю здесь нужно покопаться?
    - if @files.empty?
      %h1 Файлов нет.
    - else
      .list
        %h1 Список файлов
        %table{ :cellspacing => 0}
          %tr
            %th Файл
            %th Загружен
            %th Скачан
            %th Удалить
          - @files.each do |file|
            %tr
              %td.filename
                %a{ :href => "/#{file.sha}/#{file.id}?nowait=true", :title => file.filename }= file.filename
                = "(#{file.filesize/1024} Kb)"
                %a{ :href => "/#{file.sha}/#{file.id}" } Для пересылки 
              %td.created_at= file.created_at.strftime("%d %b")
              %td.downloads= file.downloads
              %td.delete
                %a{ :href => "/#{file.sha}/#{file.id}/delete", :title => "Удалить", :onclick => "return ORLY();" } Удалить
    .upload
      %h1 Добавить
      %form{ :name => "new_file", :enctype => "multipart/form-data", :method => "post", :action => "/" }
        %input{ :name => "file", :type => "file" }
        %br
        %input{ :type => "submit", :value => "Закачать" }

    #init.rb
    require 'rubygems'
    require 'logger'
    require 'ftools'
    require 'dm-core'
    require 'dm-validations'
    require 'dm-timestamps'
    require File.expand_path(File.dirname(__FILE__) + '/lib/stored_file')
    require File.expand_path(File.dirname(__FILE__) + '/lib/sinatra/lib/sinatra')
    require File.expand_path(File.dirname(__FILE__) + '/config/config')
    require File.expand_path(File.dirname(__FILE__) + '/lib/authorization')
    
    helpers do
      include Sinatra::Authorization
    end
    
    get '/' do
      require_administrative_privileges
      @files = StoredFile.all
      haml :list
    end
    
    post '/' do
      require_administrative_privileges
      tempfile = params['file'][:tempfile]
      filename = params['file'][:filename]
      digest = Digest::SHA1.hexdigest(filename)
      @file = StoredFile.create :filename => filename, :sha => digest, :filesize => File.size(tempfile.path)
      File.copy(tempfile.path, "./files/#{@file.id}.upload")
      redirect '/'
    end
    
    get '/style.css' do
      response['Content-Type'] = 'text/css; charset=utf-8'
      sass :style
    end
    
    get '/:sha/:id' do
      @file = StoredFile.first :sha => params[:sha], :id => params[:id]
      unless params[:nowait] == 'true'
        haml :download
      else
        @file.downloads += 1
        @file.save
        send_file "./files/#{@file.id}.upload", :filename => @file.filename, :type => 'Application/octet-stream'
      end
    end
    
    # delete file
    get '/:sha/:id/delete' do
      require_administrative_privileges
      @file = StoredFile.first :sha => params[:sha], :id => params[:id]
      File.delete("./files/#{@file.id}.upload")
      @file.destroy
      redirect '/'
    end
    Ответ написан
    Комментировать