Я хотел бы добавить файл на сервер Redmine без прохождения через графический интерфейс.
Я делаю файлы доступными для сервера Redmine с помощью отдельного процесса svn checkout
, поэтому мне просто нужно иметь возможность добавлять файлы в собственную базу данных Redmine.
В идеале, я хотел бы, чтобы решение, которое могло быть выполнено следующим образом:
./redmine-register-file /path/to/my/file.ext "with optional description"
Я считаю, что соответствующая часть интерфейса находится в redmine/apps/views/files/new.html.erb
.
Доступ к нему осуществляется по index.html.erb
, у которого есть небольшая часть, которая, на мой взгляд, важна:
<div class="contextual">
<%= link_to(l(:label_attachment_new), new_project_file_path(@project), :class => 'icon icon-add') if User.current.allowed_to?(:manage_files, @project) %>
</div>
Вот полное содержание new.html.erb
:
<h2><%=l(:label_attachment_new)%></h2>
<%= error_messages_for 'attachment' %>
<%= form_tag(project_files_path(@project), :multipart => true, :class => "tabular") do %>
<div class="box">
<% if @versions.any? %>
<p><label for="version_id"><%=l(:field_version)%></label>
<%= select_tag "version_id", content_tag('option', '') +
options_from_collection_for_select(@versions, "id", "name") %></p>
<% end %>
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
</div>
<%= submit_tag l(:button_add) %>
<% end %>
Я не знаю , Руби , что хорошо на всех (ничего , кроме print name.reverse
за меня), но я знаю , что все эти двоеточия указывают селекторы. Какую информацию я могу почерпнуть из стандартного интерфейса, который поможет мне в моей задаче, и как может выглядеть законченное решение?
Ближе к решению:
Redmine использует базу данных MySQL для хранения своих регистраций файлов.
База данных называется redmine_production
и использует следующую схему:
mysql> SHOW COLUMNS FROM redmine_production.attachments;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| container_id | int(11) | YES | MUL | NULL | |
| container_type | varchar(30) | YES | | NULL | |
| filename | varchar(255) | NO | | | |
| disk_filename | varchar(255) | NO | | | |
| filesize | int(11) | NO | | 0 | |
| content_type | varchar(255) | YES | | | |
| digest | varchar(40) | NO | | | |
| downloads | int(11) | NO | | 0 | |
| author_id | int(11) | NO | MUL | 0 | |
| created_on | datetime | YES | MUL | NULL | |
| description | varchar(255) | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
Еще немного Ruby источник
Возможно, это будет полезно: attachment.rb