Rails 中优雅的使用配置文件与全局变量

对于 Rails 5.0 之前,我们通常的做法是通过 YAML.load 来加载配置文件,自 Rails 5.0 之后,官方提供了方便加载配置文件的 API,已经不需要在手动去 load 了。

config 目录中随便添加一个配置文件,这里以 redis 为例。

redis: &redis
   redis_server: <%= ENV["REDIS_SERVER"] || '127.0.0.1' %>
   redis_port: <%= ENV["REDIS_PORT"] || 6379 %>
   redis_db_num: <%= ENV["REDIS_DB_NUM"] || 0 %>

development:
  <<: *redis

test:
  <<: *redis

production:
  <<: *redis

通过 config_for 方法优雅的读取读取配置文件

$ rails c
Running via Spring preloader in process 95129
Loading development environment (Rails 5.2.0)
irb(main):001:0> Rails.application.config_for(:redis).symbolize_keys!
=> {:redis_server=>"127.0.0.1", :redis_port=>6379, :redis_db_num=>0}

如何设定全局变量?比如将 redis 的连接设为全局变量?可以在 config/initializers 中去初始化,rails 启动后会默认的运行这个目录下的 ruby 文件。我们在这个目录下新建一个 redis.rb

require 'redis'

# 读取 redis 配置文件
redis = Rails.application.config_for(:redis).symbolize_keys!
redis_server = redis[:redis_server]
redis_port   = redis[:redis_port]
redis_db_num = redis[:redis_db_num]

# 实例化全局对象 $redis
$redis = Redis.new(host: redis_server, port: redis_port, db: redis_db_num)

到这里,运行正常不报错的话,在项目中其他模块中就可以通过 $redis 来使用这个全局变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,159评论 19 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,192评论 2 89
  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,518评论 0 82
  • 早上起来的比较晚,吃完中午饭就带女儿去地里种橘子,让小家伙也感受一下种地的乐趣,
    李代唐阅读 1,234评论 0 0
  • 幾周前,大家就約定了今晚的聚會。十五的月亮十六圓,約在這一天聚會,也是取團團圓圓之意。在蘇州的大學同學一共來了七家...
    如心1976阅读 1,243评论 1 0

友情链接更多精彩内容