Кто-нибудь пытался запустить Redmine с помощью IronRuby? Является ли это возможным?Redmine с IronRuby (Windows)?
ответ
Я не думаю, что ответ НЕТ в настоящее время ... делать немного поиска Google я нашел различные людей просят несколько пробовать и некоторые вопросы осведомленности ...
https://serverfault.com/questions/165539/redmine-in-ironruby
В настоящее время, Redmine поддерживается только на Ruby 1.8.6 и 1.8.7 и на Ruby Enterprise Edition. В настоящее время предпринимаются усилия, чтобы Redmine работал на jRuby и Rubinius. Поскольку не так много основных разработчиков, работающих под Windows, я бы не стал предполагать, что кто-то активно работает над совместимостью IronRuby. Если вы хотите помочь и запрограммировать необходимые исправления, вы можете сообщить об этом на http://redmine.org.
Redmine, YAML файлы не могут иметь% в них ..
В моих бесплодных усилий, чтобы получить Redmine работает на IronRuby одна из вещей, которые я обнаружил, было то, что линии, подобные этим: «field_done_ratio:% Done» в локальных файлах yaml исключены исключения. если я удалил «%», он сработал (или, по крайней мере, пошел дальше).
(сдался после этих 16hours, мое последнее препятствие было бесконечное перенаправление при доступе к LOCALHOST: 3000 /, хотя доступ локального хоста: 3000/Войти пошли хорошо, но после того, что вы ничего не могли сделать ..)
http://ironruby.codeplex.com/workitem/list/basic?size=2147483647
Я попытался получить Redmine на IronRuby с некоторым успехом несколько месяцев назад. Версия Redmine, которую я использовал, была 0.9.3, версия IronRuby была 1.0v4, SQL Server 2005, и она была размещена в IIS 6. На самом деле это была большая работа по ее запуску и запуску. Мне пришлось внести небольшие изменения в кучу файлов Redmine. Я также добавил некоторые файлы, которых нет в моей загрузке, например new_rails_defaults.rb. Кроме того, мне пришлось получить источник IronRuby от GitHub и немного изменить его, чтобы заставить IronRack работать.
Чтобы заставить IIS работать, мне пришлось перенаправить весь трафик на .Net для обработки в Redmine IIS WebApplication, которую я создал. Это было сделано путем добавления сопоставления расширения приложения в «C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727aspnet_isapi.dll"
Затем я перенаправил весь трафик на IronRack в свой файл Web.config.
<httpHandlers>
<clear />
<add path="*" verb="*" type="IronRuby.Rack.HttpHandlerFactory, IronRuby.Rack"/></httpHandlers>
Это остановило IIS от возможности обслуживать статические файлы. Чтобы исправить это, я создал StaticFileHttpHandler.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
namespace StaticFileHttpHandler
{
public class StaticFileHttpHandler : IHttpHandler
{
#region IHttpHandler Members
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
string staticFileUrl = context.Request.Url.LocalPath.Replace(@"/", @"\");
string staticFilePath = context.Server.MapPath(@"~\..\..\");
string defaultStaticFilePathForRemapping = @"\Redmine\public";
string defaultRootDirectoryForRemapping = @"\Redmine";
bool remapImage = !string.IsNullOrWhiteSpace(context.Request.QueryString.ToString());
if (staticFilePath.EndsWith(@"\"))
{
staticFilePath = staticFilePath.Substring(0, staticFilePath.Length - 1);
}
if (remapImage)
{
staticFilePath += (defaultStaticFilePathForRemapping + staticFileUrl.Replace(defaultRootDirectoryForRemapping, ""));
}
else
{
staticFilePath += staticFileUrl;
}
if (File.Exists(staticFilePath))
{
context.Response.ContentType = GetMimeType(staticFilePath);
context.Response.TransmitFile(staticFilePath);
}
else
{
context.Response.ContentType = "text/plain";
context.Response.Write("The File Does Not Exist!!! File: " + staticFilePath);
}
context.Response.Flush();
context.ApplicationInstance.CompleteRequest();
}
// Found Here: http://kseesharp.blogspot.com/2008/04/c-get-mimetype-from-file-name.html
private string GetMimeType(string fileName)
{
string mimeType = "application/unknown";
string ext = System.IO.Path.GetExtension(fileName).ToLower();
Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
if (regKey != null && regKey.GetValue("Content Type") != null)
{
mimeType = regKey.GetValue("Content Type").ToString();
}
return mimeType;
}
#endregion
}
}
Это также необходимо добавить в раздел httpHandlers. И для каждого статического типа файла, который вы хотите, чтобы он мог служить. Пример обслуживания PNG-файла показан ниже.
<httpHandlers>
<clear />
<add path="*.png" verb="*" type="StaticFileHttpHandler.StaticFileHttpHandler, StaticFileHttpHandler"/>
<add path="*" verb="*" type="IronRuby.Rack.HttpHandlerFactory, IronRuby.Rack"/></httpHandlers>
Мне также необходимо сделать файл images_controller.rb, чтобы указать статические файлы.
# This is a place holder controller to allow for mapping static images
class ImagesController < ApplicationController
def index
0
end
end
Следующие все * .yml-файлы нуждаются в двойном qoutes вокруг значений с знаком процента.
field_done_ratio: "% ???????"
Кроме того, я должен был закомментировать все создания индекса и удаления в файлах настройки базы данных в папке DB \ Migrate.
В заключение можно получить, что Redmine работает в основном с IronRuby, IronRack, IIS 6 и SQL Server 2005, но не без каких-либо изменений.