Добавление кода ruby ​​в скрипт/rails, который выполняется только в среде разработки rails

Я использую Rails 3, и мне нужно запустить WEBrick с поддержкой SSL во время разработки. Чтобы добиться этого, я следовал этому руководству:

http://www.nearinfinity.com/blogs/chris_rohr/configuring_webrick_to_use_ssl.html

Это работает хорошо, однако я хочу убедиться, что эти настройки не влияют на мое приложение rails при запуске в производственном режиме. В настоящее время мы используем Apache/Passenger, и проект по-прежнему работает нормально. Однако есть ли чистый способ убедиться, что этот код даже не выполняется? Я думаю, что возможным ответом может быть блок if/end вокруг кода или, возможно, встроенное средство рельсов, которое позволяет помещать код только для разработки в отдельный файл или что-то подобное.


person YWCA Hello    schedule 11.01.2012    source источник
comment
Объект Rails недоступен в момент выполнения.   -  person YWCA Hello    schedule 11.01.2012
comment
Упс, не заметил, что это pre-rails.   -  person Dave Newton    schedule 12.01.2012


Ответы (1)


Похоже, ENV['RAILS_ENV'] — ваш друг. Хэш ENV показывает вам среду Unix, в которой запускается приложение, а сам Rails будет смотреть на RAILS_ENV, чтобы решить, в каком режиме работать. Вы можете сделать что-то вроде этого:

if ENV['RAILS_ENV'].to_s == 'development' || ENV['RAILS_ENV'].to_s == ''
  # do your thing here
end

Вы также можете убедиться, что запускаете webrick в этой среде:

#> RAILS_ENV=development /path/to/webrick/script

Надеюсь, поможет.

person aemadrid    schedule 11.01.2012
comment
Я думаю, что этот ответ, вероятно, верен для более старых версий рельсов, но не для рельсов 3, поскольку RAILS_ENV больше не предполагается использоваться (сейчас рельсы запускаются через rails server [environment]). Я использовал следующий if ARGV[1].nil?, который работал до сих пор, но я бы предпочел иметь возможность захватить единственную переменную, которая всегда устанавливается в активное окружение. Возможно, это недоступно в начале процесса загрузки. - person YWCA Hello; 12.01.2012
comment
Код, который вы используете, использует переменную ENV, поэтому от этого зависит его корректная работа. Честно говоря, Webrick почти никогда не является решением. - person aemadrid; 20.01.2012