После некоторых копаний я нашел ответ: https://stackoverflow.com/a/14911994/604526
Чтобы сделать Puma по умолчанию, вставьте этот код в скрипт Для / rails выше требуются 'rails / команды':
require 'rack/handler'
Rack::Handler::WEBrick = Rack::Handler.get(:puma)
Puma теперь является сервером по умолчанию, если вы используете rails s
rails s
=> Booting Puma
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Connecting to database specified by database.yml
Puma 1.6.3 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:3000
В Rails 4 вам просто нужно добавить puma -гем к Gemfile. (Протестировано с Rails 4.0.2 и Puma 2.6.0)
Похоже, исходный код должен был работать, если вы пытались загрузить файл с сервера . Команда retrbinary
принимает указанный вами объект функции (то есть имя функции без ()
после него); он вызывается всякий раз, когда поступает часть данных (двоичный файл). В таком случае, он вызовет метод write
файла, который вы открыли
ed. Это немного отличается от retrlines
, потому что retrlines
предполагает, что данные являются текстовым файлом, и соответствующим образом преобразует символы новой строки (но повреждает, скажем, изображения).
чтение выглядит так, как будто вы пытаетесь записать в файл на сервере. В этом случае вам нужно передать объект файла (или какой-либо другой объект с методом read
, который ведет себя как файл), который будет вызван функцией хранения:
ftp.storbinary("STOR test.txt", open("file_on_my_computer.txt", "rb"))
ftp.retrbinary принимает второй аргумент как функцию обратного вызова это может быть метод прямой записи файлового объекта ieopen ('temp.txt', 'wb'). write но вместо этого вы вызываете write напрямую
, вы можете указать свой собственный обратный вызов и делать все, что хотите, с данными
def mywriter(data):
print data
ftp.retrbinary('RETR temp.txt', mywriter)