Почему еще не там жизнеспособный mod_ruby для Apache?

Более гибкий фильтрующий массив из другого массива, который содержит свойства объекта

function filterFn(array, diffArray, prop, propDiff) {
    diffArray = !propDiff ? diffArray : diffArray.map(d => d[propDiff])
    this.fn = f => diffArray.indexOf(f) === -1
    if (prop) {
         return array.map(r => r[prop]).filter(this.fn)
    } else {
         return array.filter(this.fn)
    }
}

//You can use it like this;

var arr = [];

for (var i = 0; i < 10; i++) {
    var obj = {}
    obj.index = i
    obj.value = Math.pow(2, i)
    arr.push(obj)
}

var arr2 = [1, 2, 3, 4, 5]

var sec = [{t:2}, {t:99}, {t:256}, {t:4096}]

var log = console.log.bind(console)

var filtered = filterFn(arr, sec, 'value', 't')

var filtered2 = filterFn(arr2, sec, null, 't')

log(filtered, filtered2)

12
задан Orion Edwards 17 September 2008 в 01:02
поделиться

5 ответов

Основная проблема - это: в течение долгого времени МРТ была единственная выполнимая Реализация Ruby. МРТ имеет много проблем, которые мешают встраивать ее в другое приложение (который является в основном, что делает mod_ruby: это встраивает МРТ в Apache), особенно многопоточный (который Apache). Это не особенно ориентировано на многопотоковое исполнение, и это имеет довольно мало глобального состояния.

Это глобальное состояние означает, например, что, если одно приложение направляющих изменяет некоторый класс, то все другие приложения направляющих, которые работают на том же сервере Apache, будут также видеть этот измененный класс.

Другая проблема состоит в том, что исходный код МРТ не легко hackable. МРТ теперь больше чем 15 лет, и она начинает показывать.

В результате этих проблем действительно правильно никогда не работал mod_ruby, и в какой-то момент специалисты по обслуживанию просто сдались.

C базирующийся интерпретатор PHP, с другой стороны, был разработан со дня один, чтобы быть выполненным как mod_php в Apache. Действительно, для этих первых двух версий, не было даже версии командной строки интерпретатора, mod_php был единственным способом выполнить PHP.

Пассажир Phusion (иначе mod_rack иначе mod_rails) решает эту проблему, в основном сдаваясь и обходя проблему: они просто выполняют отдельную копию МРТ в отдельном процессе для каждого приложения. Это работает отлично, и не только для Ruby. Это поддерживает WSGI (стандартный интерфейс для веб-Платформ Python), Стойка (стандартный интерфейс для веб-Платформ Ruby) и прямая поддержка Ruby on Rails.

Мои надежды находятся на mod_rubinius, который, к сожалению, еще не существует. Rubinius был разработан с начала быть ориентированным на многопотоковое исполнение, встраиваемым, свободным от глобального состояния, не используют стек C и так далее. Это было разработано, чтобы смочь выполнить несколько Rubinius VMs в одном процессе Rubinius. Это делает mod_rubinius бесконечно легче реализовать и поддержать, чем mod_ruby. К сожалению, конечно, Rubinius еще не выпущен, и реальная работа над mod_rubinius не может даже начаться, пока Rubinius не выпущен. Хорошие новости - то, что mod_rubinius уже имеет больше рабочей силы позади него, чем mod_ruby когда-нибудь имел, потому что это заплатило разработчикам, работающим над ним хостинговой компанией направляющих, которая отчаянно хочет использовать его самим.

18
ответ дан 2 December 2019 в 03:10
поделиться

Существует Пассажир Phusion , устойчивый модуль Apache, который может работать Стойка приложения с минимальной конфигурацией. Это становится обращением к общим хостам, и превращение любой программы в приложение Стойки смехотворно легко:

приложение Стойки А является объектом Ruby (не класс), который отвечает call. Это берет точно один аргумент , среда и возвращает Массив точно три значения : состояние, заголовки и тело.

23
ответ дан 2 December 2019 в 03:10
поделиться

Это, возможно, стоит точки дважды разъясняющегося mislav, что mod_rails на самом деле не ограничен кодом направляющих вообще. Новое имя, mod_rack, является путем лучше. Тривиально небольшие приложения могут быть rackable - их пример быть:

class HelloWorld
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
  end
end
5
ответ дан 2 December 2019 в 03:10
поделиться

Существует тот: mod_ruby, но это не сохранялось приблизительно за 2 года.

4
ответ дан 2 December 2019 в 03:10
поделиться

Существует mod_rails, и он работает , может Установить в стойку приложения, в чем больше можно нуждаться?

0
ответ дан 2 December 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: