2015-10-09 148 views
0

我的命名爲「獵鷹」的寶石從命令行運行。使用ARGVOptionParser,我讀取命令行輸入並在我的應用程序中運行主要的Ruby類,沒有問題。命令行紅寶石配置塊

只要從Rails控制檯調用它,就可以在初始化文件中獲取配置塊。繼this basic pattern,我將它使用戶可以創建類似下面的初始化文件:

# config/initializers/falcon.rb 

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

,然後在Rails的控制檯,我可以這樣做:

Falcon.configuration.allowed_setting # => 'value' 

然而,當我從命令行運行時,gem類不使用它們的設置配置選項,而是如同沒有設置配置一樣。我想這是因爲從命令行執行不會通過Rails環境及其預加載的初始化文件。

我試過運行bundle exec falcon [command],但是這並沒有解決任何問題。有關如何解決這個問題的任何想法,以便命令行通過Rails配置運行gem?

+2

爲什麼不需要初始化文件呢?你的寶石真的需要加載整個鐵軌環境嗎?另外你可能想看看[Slop](https://github.com/leejarvis/slop),這使得處理命令行參數更加愉快。 – max

回答

1

Ruby沒有自動加載配置文件的工具。這取決於你。您需要通過在Rails環境中運行免費獲取此行爲,其中自動加載的配置文件,但您不能依賴此繼續在Rails之外工作。

您應該爲程序添加一個-c--config選項,該選項允許用戶指定配置文件的路徑,您可以加載該路徑。

1

如果您的項目是Rails專注的,您可能需要考慮構建引擎(因爲它使得集成和測試更簡單)。

另外,檢查出Application.initialize!