Closed yakhlakov closed 6 years ago
Здравствуйте!
У меня пока два вопроса:
Remine log:
Started POST "/uploads.json" for xx.xx.xx.xx at 2018-01-31 22:33:33 +0300
Processing by AttachmentsController#upload as JSON
Current user: XX(id=43)
Completed 500 Internal Server Error in 16ms (ActiveRecord: 2.3ms)
NoMethodError (undefined method `split' for nil:NilClass):
plugins/redmine_dropbox_attachments/lib/redmine_dropbox/attachments_controller_patch.rb:48:in `prepare_dropbox_redirect'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'
nxs-chat-srv log:
[31.01.2018 19:33:31.574971] (13) DEBUG: [queue-worker]: tlgrm request: success
[31.01.2018 19:33:32.107607] (13) DEBUG: [queue-worker]: tlgrm file download: success
[31.01.2018 19:33:33.713803] (13) ERROR: [queue-worker]: rdmn file upload error: wrong Redmine response code (file path: /var/spool/nxs-chat-srv/tlgrm/168634058/file_7.png, response code: 500, response body: "")
[31.01.2018 19:33:33.961946] (13) DEBUG: [queue-worker]: tlgrm request: success
[31.01.2018 19:33:33.961975] (13) WARNING: [queue-worker]: error in 'proc.queue-worker.tlgrm-update.handler_message_sess_type_new_issue' (user id: 168634058, error code: 2)
[31.01.2018 19:33:33.962111] (13) WARNING: [queue-worker]: error in 'proc.queue-worker.tlgrm-update.handler_message_exec' (user id: 168634058, error code: 2)
Вот часть кода, на которой происходит ошибка:
# Since we uploads occur prior to an actual record being created,
# the context needs to be parsed from the url.
# ex: http://url/projects/project_id/..../action_id
--> ref = request.env["HTTP_REFERER"].split("/")
# We also only want the url parts that follow .../projects/ if possible.
# If not, just use the standard split HTTP_REFERER
ref = ref[ref.index("projects") + 1 .. -1] if ref.index("projects")
UPD Я, конечно, не уверен, но все таки... Может быть дело в плагине nxs-chat? Там в файле redmine/plugins/nxs_chat/lib/chat_helper.rb есть такой код:
# Attachments
unless issue.attachments.nil?
json[:attachments] = []
issue.attachments.each do |attachment|
a = {}
a["id"] = attachment.id
a["filename"] = attachment.filename
a["filesize"] = attachment.filesize
a["content_type"] = attachment.content_type
a["description"] = attachment.description
#a["content_url"] = url_for(:controller => 'attachments', :action => 'download', :id => attachment, :filename => attachment.filename, :only_path => false) # TODO
a["author"] = {:id => attachment.author.id, :name => attachment.author.name} unless attachment.author.nil?
a["created_on"] = attachment.created_on
json[:attachments] += [a]
end
end
Здравствуйте!
Проверьте, пожалуйста, будет ли создаваться задача и прикрепляться к ней файлы если производить загрузку curl'ом из консоли? Вот пример того как это можно сделать: http://www.redmine.org/projects/redmine/wiki/Rest_api_with_curl#Attaching-files (раздел Attaching-files)
Дополню...
Если при проверке curl'ом будет выдаваться ошибка - отключите, пожалуйста, плагин nxs_chat и повторите загрузку. Сохранится ли проблема?
Что с включенным, что с выключенным плагином nxs_chat лог аналогичный:
Started POST "/uploads.xml" for XX.XX.XX.XX at 2018-02-01 12:54:21 +0300
Processing by AttachmentsController#upload as XML
Current user: admin (id=1)
Completed 500 Internal Server Error in 97ms (ActiveRecord: 69.1ms)
NoMethodError (undefined method `split' for nil:NilClass):
plugins/redmine_dropbox_attachments/lib/redmine_dropbox/attachments_controller_patch.rb:48:in `prepare_dropbox_redirect'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'
Когда отключаю плагин dropbox - все ок:
<?xml version="1.0" encoding="UTF-8"?><upload><id>18</id>
token>18.0ec48c151eac763ac732dd2b03e22d1279ea6447a9ea337ff17ade67d1597977</token>
/upload>sergey@sergey-ubuntu:/var/data/redmine$
Тогда я не уверен, что мы сможем Вам помочь с этим вопросом. Посмотрим, конечно, в команде, но результат не гарантирую.
Попробуйте написать Bug request разработчикам плагина для Dropbox. Полагаю, что это общая проблема, когда после включения их плагина перестаёт работать функционал загрузки файлов через API Redmine и они должны обратить на это внимание. Сообщите, пожалуйста, когда будут какие-то результаты.
Если указать ключ --referer в curl все работает. С его помощью, видимо, плагин понимает куда складывать файлы в dropbox. Из-за этого и ошибка.
Скажите, пожалуйста, а какое значение этого ключа Вы указывали?
Если можно, приведите полную команду для curl (разумеется, без указания приватных данных).
Полная команда:
curl --data-binary "@image.png" -H "Content-Type: application/octet-stream" -X POST --referer https://domain.com/issues/1 -u login:pass https://domain.com/uploads.xml
Ответ:
<?xml version="1.0" encoding="UTF-8"?><upload><id>24</id><token>24.d41d8cd98f00b204e9800998ecf8427e</token></upload>
Да, тогда Вам надо обратиться к разработчикам плагина redmine_dropbox_attachments с описанием данной проблемы. Со своей стороны мы помочь вряд ли сможем, к сожалению.
Ок, в любом случае спасибо. Думаю можно закрывать задачу.
Не за что, обращайтесь! Если будет возможность - напишите потом чем дело кончилось, пожалуйста.
Добрый день. Моя конфигурация: Environment: Redmine version 3.4.4.stable Ruby version 2.3.4-p301 (2017-03-30) [x86_64-linux] Rails version 4.2.8 Environment production Database adapter Mysql2 SCM: Git 2.7.4 Filesystem
Redmine plugins: ... nxs_chat 1.5 ... redmine_dropbox_attachments 2.2.1 ...
Плагин redmine_dropbox_attachment складывает все файлы в Drop Box.
При попытке прикрепить файла к задаче появляется сообщение об ошибке:
В логах:
Понятное дело, что проблема в плагине redmine_dropbox_attachment. Можно ли ее как-то обойти?
Спасибо.