#ruby-on-rails #configuration
#ruby-on-rails #конфигурация
Вопрос:
В моем проекте я хочу поместить некоторые детали конфигурации, такие как ключи, некоторый уникальный код внутри файла config или yml, для доступа во время обработки. И как получить доступ к этой переменной в файле пользовательского интерфейса или JS
Я не понимаю, как сохранить значения, где либо в database.yml
или any config file
.
Одно из предположений заключается в том, чтобы поместить внутри application.yml
config/application.yml
defaults: amp;defaults
email: test@example.com
secret: example_test
Комментарии:
1. Взгляните на драгоценный камень rails_config . Мне это всегда пригодится.
Ответ №1:
Вы можете создать инициализатор для загрузки файла YML, проанализировать его в соответствии с вашей текущей средой и сохранить результаты в глобальной переменной.
Например:
config/application.yml
defaults: amp;defaults
email: example@example.com
secret: secret
test:
<<: *defaults
secret: another_secret
development:
<<: *defaults
production:
<<: *defaults
email: production@example.com
secret: production_secret
Затем вы можете загрузить эту конфигурацию, используя этот инициализатор:
config/initializers/app_config.rb
class ConfigurationFileNotFound < RuntimeError ; end
$CONF = begin
YAML.load_file(Rails.root.join('config', 'application.yml'))[Rails.env].symbolize_keys
rescue Errno::ENOENT => e
raise ConfigurationFileNotFound, 'config/application.yml was not found. You can find an example of it in config/application.yml-example'
end
Теперь ваша конфигурация должна быть доступна в любом месте вашего приложения с помощью глобальной переменной $CONF
$CONF[:email]
Однако, если у вас большая конфигурация, вам следует создать одноэлементный класс и заставить его инициализировать ваш файл yml и загрузить его ключи и значения в атрибутах внутри, затем используйте этот класс для доступа к желаемой конфигурации.
Комментарии:
1. Большое спасибо, чувак. Это помогает мне переносить данные по умолчанию извне в application.yml 🙂
Ответ №2:
Есть несколько способов сделать эту функцию.
- Вы можете создать свой собственный конфигурационный файл и написать класс, который проанализирует этот файл (с Psych, если это .yml cofig), а затем получить доступ к методам этого класса.
- Также вы можете сохранить свою конфигурацию в обычной модели и сохранить их в базе данных. Таким образом, вы можете изменить их, например, в панели администратора.
- Вы можете использовать https://github.com/bkeepers/dotenv драгоценный камень для хранения ваших переменных в
ENV
- Еще один драгоценный камень https://github.com/railsjedi/rails_config для конфигурации rails. Кажется, что он выполняет функциональность первой точки