Настройте некоторую переменную внутри файла config или yml в Rails

#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:

Есть несколько способов сделать эту функцию.

  1. Вы можете создать свой собственный конфигурационный файл и написать класс, который проанализирует этот файл (с Psych, если это .yml cofig), а затем получить доступ к методам этого класса.
  2. Также вы можете сохранить свою конфигурацию в обычной модели и сохранить их в базе данных. Таким образом, вы можете изменить их, например, в панели администратора.
  3. Вы можете использовать https://github.com/bkeepers/dotenv драгоценный камень для хранения ваших переменных в ENV
  4. Еще один драгоценный камень https://github.com/railsjedi/rails_config для конфигурации rails. Кажется, что он выполняет функциональность первой точки