Изменить сервер по умолчанию для Rails

Я установил гем mongrel, потому что он нужен мне на моей рабочей станции в редких случаях, и теперь это мой сервер Rails (2) по умолчанию. Я знаю, что могу указать script/server webrick в командной строке, но дело в том, что я хотел бы, чтобы моя система (или приложение) по умолчанию использовала webrick и использовала mongrel только при указании.

Кто-нибудь знает, как это устроить?

Спецификации: WinXP, Rails 2.3.12, Ruby 1.8.7


person JellicleCat    schedule 25.08.2011    source источник
comment
Это для разового (одного проекта) или для всех проектов, которые вы создадите в будущем?   -  person Khronos    schedule 25.08.2011
comment
Предпочтительно для всех проектов, но любой ответ будет полезен.   -  person JellicleCat    schedule 25.08.2011


Ответы (1)


Хорошо, вот несколько вариантов:

Вариант первый — одноразовый: всегда добавлять webrick в качестве аргумента командной строки

Откройте скрипт/сервер и вставьте строку между двумя требуемыми

#!/usr/bin/env ruby
require File.expand_path('../../config/boot',  __FILE__)
ARGV.unshift "webrick"
require 'commands/server'

Второй вариант — глобальный: отредактируйте файл commands/server.rb, который запускает рельсы.

gem which railties -> говорит вам, где находится код запуска. Откройте файл в lib/commands/server.rb.

Примерно в строке 45 отредактируйте логику так, чтобы вебрик всегда запускался по умолчанию.

server = Rack::Handler.get(ARGV.first) rescue nil
unless server
  begin
    server = Rack::Handler::WEBrick # was Mongrel
  rescue LoadError => e
    server = Rack::Handler::WEBrick
  end
end

Вариант 3 — самый чистый, но наиболее сложный:

Переключитесь на Bundler и управляйте своими зависимостями напрямую. Это больше работы, но в какой-то момент вы можете переключиться на rails 3, что может быть полезно в зависимости от жизненного цикла приложения. Здесь есть руководство по rails 2.3

person Khronos    schedule 25.08.2011