Ruby:如何替换文本块中的值

时间:2017-08-24 19:56:58

标签: ruby-on-rails ruby

我对红宝石很新,所以不知道接近这个......请善待。

我有一个配置文件,我需要阅读并替换2个值...

我需要更新的块是:

rails_root = File.expand_path('../..', __FILE__)
if %w(development test).include?(ENV['RAILS_ENV']) 
  worker_processes 2
else
  worker_processes 100
end
...snip...

我需要替换" worker_processes"的值。新的价值......分别说20和50 ...任何帮助非常感谢。提前谢谢!

1 个答案:

答案 0 :(得分:0)

Ruby提供了一些跨多个文件操作数据的方法。听起来你正在考虑更多的FileIO方法,但为了性能和杂乱的可能性,我会建议反对。

由于您在Rails中工作,我会将work_processes作为全局哈希处理。 创建$work_processes = Hash.new并拥有一组将在该文件中引用的密钥。

rails_root = File.expand_path('../..', __FILE__)
if %w(development test).include?(ENV['RAILS_ENV']) 
  $worker_processes[:dev_env] #=> 2
else
  $worker_processes[:other] #=> 100
end
...snip...

在此示例中,在Rails项目中的任何文件中调用work_processes[:dev_env]将返回' 2'并且可以替换为您想要的任何数字。

要了解有关全局变量范围的更多信息,请查看docs

编辑:我想要注意的是,全局变量的使用是不受欢迎的,并且可以让你了解漏洞。您可以使用环境变量完成相同类型的效果。 ENV['work_process_1']ENV['work_process_2']。您可以在this blog post中找到更多信息。