• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

rubyonrails修改配置文件或修改yml文件的内容

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本事例只为说明如何修改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
        end

    end

  end

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

  def update_webinfo

    info = Webinfo["webinfo"]  # 获取

    info["webtitle"] = "新的网站名称"    

    Webinfo.save(info) # 保存

  end

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

如果有更好的方法,还望大家赐教。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby(2008-04-06)发布时间:2022-07-14
下一篇:
ASP.NET今后将包含Ruby支持?发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap