Как вы обрабатываете SSL в разработке?

У меня есть приложение, которое использует HTTPS для некоторых своих маршрутов в сочетании с плагином ssl_requirement. Он развернут и отлично работает в производстве.

Вопрос в том, как лучше всего справиться с этим в разработке, потому что в данный момент я просто взламываю свой routes.rb, чтобы удалить ключ :requirements, и, очевидно, это не очень удобно или элегантно:

map.resource :session, :controller => 'session',
                       :only => [:new, :create, :destroy],
                       :requirements => { :protocol => 'https' }

В идеале я хотел бы иметь возможность запускать безопасные части моего приложения в разработке на Mongrel без каких-либо изменений. Как я могу этого добиться? Я использую Mac OS X.


person John Topley    schedule 22.01.2010    source источник
comment
Какая у вас среда разработки?   -  person jonnii    schedule 22.01.2010
comment
Я спрашиваю об этом, потому что для более сложных приложений (например, тех, которые используют SSL) вам нужно начать думать о том, чтобы на ваших машинах для разработки была более производственная среда... apache/passenger и т.д...   -  person jonnii    schedule 22.01.2010
comment
На данный момент запускаю Mongrel через script/server, но не прочь перейти на Passenger. Я запускаю Apache/Passenger в продакшене.   -  person John Topley    schedule 22.01.2010


Ответы (2)


Не беспокойтесь о SSL в процессе разработки

Для среды разработки, IMO, вам не нужно запускать SSL. Это не стоит времени или хлопот, тем более, что к команде присоединяется все больше людей. Что касается ваших маршрутов, я бы просто сохранил протокол как http в среде разработки:

protocol = Rails.env.development? ? "http" : "https"

map.resource :session, :controller => 'session',
                       :only => [:new, :create, :destroy],
                       :requirements => { :protocol => protocol }

Теперь вам нужно протестировать интеграцию SSL в вашей промежуточной среде — месте, где вы выполняете развертывание непосредственно перед развертыванием в рабочей среде. Здесь вы хотите точно воспроизвести производственную среду. Ваша среда разработки не обязательно должна соответствовать вашей производственной среде таким же образом.

person Ryan McGeary    schedule 22.01.2010
comment
Спасибо, я не знаю, почему я не додумался использовать этот фрагмент кода! - person John Topley; 23.01.2010

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

Я предлагаю перейти на тот же веб-сервер, который вы используете в производстве, который вы упомянули, это apache/passenger.

В связанном вопросе ... как вы управляете своей тестовой средой с помощью ssl? Для этого я в настоящее время взламываю свои маршруты, как вы делаете. Есть ли способ лучше?

person jonnii    schedule 22.01.2010
comment
Мне действительно нужно проверить орфографию, прежде чем писать пост! - person jonnii; 22.01.2010