2014-09-11 5 views
1

Используя рельсы 4, мне нужно генерировать переменную среды от относительного URL в разработке, и абсолютное один в производствеРельсы переменной среды относительный или абсолютный путь

Dev: some_path = [Рельсы корень]/some_path

PROD: some_path = [Некоторые абсолютный путь]/some_other_path

Я храню эти переменные в файле YML, следуя инструкциям, которые я нашел there. Что было бы хорошим способом/лучшей практикой для хранения и генерации этих переменных?

К примеру, в моем YML я мог бы написать:

development: 
    DOCETUDE_PATH: some_path 
production: 
    DOCETUDE_PATH: /home/public/some_other_path 

И где-то в моем коде я должен генерировать переменные PathName. Это похоже на работу, но выглядит хакерским:

if (ENV['DOCETUDE_PATH'].start_with?("/")) 
    MY_CST = Pathname.new(ENV['DOCETUDE_PATH'] 
else 
    MY_CST = File.join(Rails.root, ENV['DOCETUDE_PATH']) 
end 

ответ

1

Если это ваши требования, это ваши требования.

Я мог бы основывать его на среде Rails, а не на пути, в случае толстого пальца, или включать проверку окружения v. Окружения, чтобы убедиться, что никто не сжигает конфигурацию.

Я мог бы использовать файл инициализации среды Ruby вместо среды, так что это все код.

Если бы я делал это по-своему, я бы реорганизовать некоторые из кода, чтобы это выглядело больше как:

path = ENV['DOCETUDE_PATH'] 
MY_CST = relative_path?(path) ? Pathname.new(path) : File.join(Rails.root, path) 

(И создать relative_path? метод, конечно, если он уже не существует где-то.)

Смежные вопросы