我正在写一个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