参考:http://ruby-doc.org/stdlib-1.9.3/libdoc/yaml/rdoc/YAML/Store.html

本事例只为说明如何修改yml文件内容。

一、需求是怎么样修改yml文件内容?

配置文件名称为webinfo.yml,内容为:

development:

  webinfo:

    webtitle: 我的网站名称

    keyword: 网站的关键字

production:

  webinfo:

    webtitle: 上线后的网站名称

    keyword:上线后的网站的关键字

二、我是怎么做的?

我的思想是:首先取到配置文件的所有内容,把内容转换为json对象或hash对象,然后把某个字段的值修改为自己的内容,再把整个json或hash转换成yml写回到yml配置文件。

1、获取内容并转化为json或hash

  获取文件内容的方式有很多,这里介绍两种方式:使用YAML.load(File.open(filepath))或YAML.load_file(filepath)和使用Gem包settingslogic(settingslogic的使用请参考:https://github.com/binarylogic/settingslogic)

  这里我使用settingslogic这种方式:新建一个类(比如在models文件夹下),类名:Webinfo,内容为

  class Webinfo< Settingslogic

    PATH = "#{Rails.root}/config/webinfo.yml"
     source PATH
     namespace Rails.env

  end

  在controller里的使用Webinfo.webinfo或Webinfo["webinfo"]来获取到内容,代码如下:

  def get_webinfo

    info = Webinfo["webinfo"]

    puts info.inspect

    title = info["webtitle"]

    puts title

  end

2、修改某个字段的值

  在Webinfo类新增保存方法:

  require 'yaml/store'

  class Webinfo< Settingslogic

    PATH = "#{Rails.root}/config/webinfo.yml"
     source PATH
     namespace Rails.env

    

    def self.save(content)

      store = YAML::Store.new PATH
        store.transaction do
           store[Rails.env]["webinfo"] = content.to_hash  //如果不加["webinfo"] ,将会将原先的全部删掉,只保留这个
        end

    end

  end

  在controller里的新建修改的方法,代码如下:

  def update_webinfo

    info = Webinfo["webinfo"]  # 获取

    info["webtitle"] = "新的网站名称"   //设置要更新的   

    Webinfo.save(info) # 保存

  end

   这样就把这个属性的内容改掉了。

ruby 修改Setting config yaml内容的更多相关文章

  1. 转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因

    转:http://www.cnblogs.com/tider1999/p/4308440.html NLog的安装请百度,我安装的是3.2.NLog可以向文件,数据库,邮件等写日志,想了解请百度,这里 ...

  2. SAE设置记录:修改config.yaml实现地址重写和修改固定链接

    刚搭建完sae博客后闲置下来了,偶尔写两篇文章,最近想整理整理sae,于是开始. 刚新建完博客修改固定链接,可是保存后直接访问出现问题,访问不到文章了,而且我的博客地址前面会出现"1.&qu ...

  3. C#项目实例中读取并修改App.config文件

    C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...

  4. WPF C#之读取并修改App.config文件

    原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的.  下面来简单介绍一下App.config文件的修改和更新. ...

  5. 如何修改 app.config 的配置信息

    如何修改 app.config 的配置信息 收藏 最问这个问题的人有点多,其实 .Net 提供了这样的功能我们可以在 app.config 中 userSettings 节点中保存我们的应用程序设置信 ...

  6. 修改 App.Config 配置文件 C#

    [转]在WCF程序中动态修改app.config配置文件 今天在个WCF程序中加入了修改配置文件的功能.我是直接通过IO操作修改的app.config文件内容,修改后发现发现其并不生效,用Google ...

  7. 修改web.config来开启Gzip压缩

    IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started /planning-your-iis-architecture ...

  8. AppModify修改app.config

    public class AppModify { /// <summary> /// 依据连接串名字connectionName返回数据连接字符串 /// </summary> ...

  9. 在WCF程序中动态修改app.config配置文件

    今天在个WCF程序中加入了修改配置文件的功能.我是直接通过IO操作修改的app.config文件内容,修改后发现发现其并不生效,用Google搜了一下,在园子里的文章动态修改App.Config 和w ...

随机推荐

  1. log4j配置文件

    log4j.rootLogger=INFO,CONSOLElog4j.addivity.org.apache=truelog4j.appender.stdout=org.apache.log4j.Co ...

  2. 隐马尔可夫树(HMT模型)

    HMT(Hidden Markov Tree)隐马尔可夫树 [论文] 小波变换与HMT模型的图像插值算法-郭昌-中山大学学报(自然科学版)

  3. C++之函数模板

    C++之函数模板与模版函数 直接上代码:  C++ Code  12345678910111213141516171819202122232425262728293031323334353637383 ...

  4. WPF进阶之接口(4):ICommand实现详解

    上一章WPF进阶之接口():INotifyPropertyChanged,ICommand中我们遗留了几个问题,我将在本节中做出解释.在详细解释ICommand实现之前,我们现在关注一下什么是:弱引用 ...

  5. iOS开发之--iOS APP打包的时候出现的四个选项

  6. 仿美团ViewPager+GridView

    在接下来我要实现一个仿美团的效果 1.首先写一个登录注册界面用到了,很简单... 这里要提醒各位在调用方法时有set...     也有add....  的方法,为了严谨可以做些正则判断手机号,用se ...

  7. 在VS2013下如何配置DirectX SDK的开发环境_百度经验

    jpg改rar

  8. Android 全局异常处理(三)

    用过安卓手机的用户以及安卓开发者们会时长碰到程序异常退出的情况,普通用户遇到这种情况,肯定非常恼火,甚至会骂一生垃圾软件,然后卸载掉.那么开发者们在开发过程中遇到这种情况给怎么办呢,当然,你不可能世界 ...

  9. html5文本超出部分用省略号表示

    <p style="overflow:hidden; text-overflow:ellipsis;width:170px; white-space:nowrap; "> ...

  10. Reference counted objects

    Reference counted objects · netty/netty Wiki https://github.com/netty/netty/wiki/Reference-counted-o ...