2015-10-09 2 views
0

Мой драгоценный камень под названием «Сокол» запускается из командной строки. Используя ARGV и OptionParser, я прочитал ввод в командной строке и запустил основные классы Ruby в своем приложении, без проблем.Командная строка Ruby gem с конфигурационным блоком

Он может принимать конфигурационный блок в файле инициализации, если он вызывается из Rails Console. После this basic pattern, я сделал это так, что пользователи могут создать файл инициализации, как следующее:

# config/initializers/falcon.rb 

Falcon.configure do |c| 
    c.allowed_setting = 'value' 
end 

И затем, в консоли Rails, я могу это сделать:

Falcon.configuration.allowed_setting # => 'value' 

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

Я пробовал работать bundle exec falcon [command], но это ничего не исправить. Любые идеи о том, как обойти это, чтобы командная строка запускала камень с конфигурациями Rails?

+2

Зачем вместо этого требовать файл инициализации? Нужно ли вашему драгоценному камню загружать всю среду рельсов? Также вы можете взглянуть на [Slop] (https://github.com/leejarvis/slop), что значительно упрощает работу с аргументами командной строки. – max

ответ

1

В Ruby нет объекта для автоматической загрузки конфигурационного файла. Это зависит от вас. Вы должны получать это поведение бесплатно, работая в среде Rails, где - файлы с автоматической загрузкой, но вы не можете зависеть от этого, продолжая работать за пределами Rails.

Вы должны добавить в свою программу -c10 или --config, которая позволяет пользователям указать путь к файлу конфигурации, который вы можете загрузить.

1

Если ваш проект ориентирован на Rails, вы можете захотеть подумать о создании двигателя (поскольку это упрощает интеграцию и тестирование).

Кроме того, выезд Application.initialize!.

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