我正在寫一個ruby gem,我想讓用戶使用自己的yaml文件配置,但我不知道如何測試user_config.yml是否存在到rails配置中路徑。
只有當這個文件存在到配置路徑中時,我纔想使用user_config.yml。如何在rails配置路徑中訪問yaml
回答
Rails.root
(或在早期版本的Rails中的RAILS_ROOT
)爲您提供了應用程序根目錄的路徑。從那裏,你可以看到你感興趣的文件是否存在。
例如
path = File.join(Rails.root, "config", "user_config.yml")
if File.exists?(path)
# do something
end
您可以使用Array類型的$ LOAD_PATH變量來訪問Rails應用程序的加載路徑。
因此
if $LOAD_PATH.include?('/path/where/user/should/put/their/user_config.yml')
# EDIT
config_options = File.new('rails_app/config/user_config.yml', 'r')
else
# EDIT
config_options = File.new('path/to/default/config.yml', 'r')
end
還有用於Ruby File class稱爲#exists另一種有用的方法?這當然會檢查文件是否存在。有關更多信息,請參閱File class docs。
希望這能讓你開始。你的問題相當模糊,如果你需要更多的幫助,請回復更多細節。
對不起,這很難解釋。如果我將user_config.yml放入配置路徑(rails_app/config/user_config.yml),我該如何訪問該文件?我可以使用類似的東西:YAML.load_file(「#{$ LOAD_PATH} /config/user_config.yml」)? – squiter
正如我在我的原始答案中所說的,$ LOAD_PATH變量是一個數組,所以你不想使用字符串插值。有關加載文件的建議,請參閱我的回答中的編輯。 –
@BrunnoDosSantos爲了從你的yaml中得到一個散列,你的確可以使用YAML模塊。 'configs_hash = YAML.load_file(「path/to/config.yml」)[RAILS_ENV]',其中'RAILS_ENV'是'development','test'等。 – cdesrosiers
- 1. 訪問RequireJS路徑配置
- 2. 在Ruby on Rails中配置路徑和路徑的位置?
- 3. Rails - 更改配置路徑
- 4. 如何在android中訪問USB路徑?
- 5. 如何訪問Jekyll YAML配置中的多個嵌套變量
- 6. 如何在Durandal中配置路徑?
- 7. 如何使用c#訪問web配置文件夾路徑#
- 8. 如何在springboot的yaml文件中設置logback.xml文件路徑
- 9. Android - 如何訪問路徑
- 10. 如何訪問路徑?
- 11. 如何從控制器中的Class方法訪問路徑路徑? (Rails)的
- 12. 如何在Symfony 2中訪問控制器外的路徑和配置?
- 13. 在rails中訪問mongoid配置變量
- 14. 如何訪問函數中的路徑?
- 15. rails 3 devise避免訪問/ sign_in路徑
- 16. 訪問rails資產的相對路徑
- 17. Rails I18n訪問路徑幫助程序
- 18. 訪問Rails環境配置
- 19. Log4j配置:如何在yaml配置文件中使用環境變量log4j2.yaml
- 20. Rails路徑問題
- 21. 通過yaml Symfony可配置的實體路徑?
- 22. 配置YAML正則表達式路徑排除例外
- 23. 訪問路徑,以在軌
- 24. 如何在訪問文件上添加子訪問路徑
- 25. Rails 3:如何編碼路徑路徑
- 26. Asp.net路徑訪問
- 27. PHP訪問路徑
- 28. MVC路由訪問路徑
- 29. 在Ruby on Rails中訪問控制器命令給定路徑
- 30. 在Java類路徑配置
這幾天你可能會使用'Rails.root.join('config','user_config.yml')' – Confusion