ruby 修改Setting config yaml内容
参考: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内容的更多相关文章
- 转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
转:http://www.cnblogs.com/tider1999/p/4308440.html NLog的安装请百度,我安装的是3.2.NLog可以向文件,数据库,邮件等写日志,想了解请百度,这里 ...
- SAE设置记录:修改config.yaml实现地址重写和修改固定链接
刚搭建完sae博客后闲置下来了,偶尔写两篇文章,最近想整理整理sae,于是开始. 刚新建完博客修改固定链接,可是保存后直接访问出现问题,访问不到文章了,而且我的博客地址前面会出现"1.&qu ...
- C#项目实例中读取并修改App.config文件
C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...
- WPF C#之读取并修改App.config文件
原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的. 下面来简单介绍一下App.config文件的修改和更新. ...
- 如何修改 app.config 的配置信息
如何修改 app.config 的配置信息 收藏 最问这个问题的人有点多,其实 .Net 提供了这样的功能我们可以在 app.config 中 userSettings 节点中保存我们的应用程序设置信 ...
- 修改 App.Config 配置文件 C#
[转]在WCF程序中动态修改app.config配置文件 今天在个WCF程序中加入了修改配置文件的功能.我是直接通过IO操作修改的app.config文件内容,修改后发现发现其并不生效,用Google ...
- 修改web.config来开启Gzip压缩
IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started /planning-your-iis-architecture ...
- AppModify修改app.config
public class AppModify { /// <summary> /// 依据连接串名字connectionName返回数据连接字符串 /// </summary> ...
- 在WCF程序中动态修改app.config配置文件
今天在个WCF程序中加入了修改配置文件的功能.我是直接通过IO操作修改的app.config文件内容,修改后发现发现其并不生效,用Google搜了一下,在园子里的文章动态修改App.Config 和w ...
随机推荐
- thinkPHP中phpexcel的导出功能
public function wExcel() { vendor("PHPExcel.PHPExcel"); // Create new PHPExcel object $obj ...
- Effective C++ Item 9 Never call virtual functions during constrution or destruction
Because such calls would never go to a more derived class than that of currently executing construto ...
- iOS 7 SDK: 如何使用后台获取(Background Fetch)
本文转载至 http://www.cocoachina.com/applenews/devnews/2013/1114/7350.html 本文主要教你如何使用iOS 7 SDK多任务处理API--B ...
- Java Web项目--显示一个静态页面
我们可以在Eclipse中新建一个Dynamic Web Project,然后在项目的WebContent目录下新建一个Html文件page1.html,其内容如下: <!DOCTYPE htm ...
- python的其他安全隐患
零.绪论 python这里以python2.7为研究对象,对应的我们会简要说明一下python3,其他指与反序列化无关的安全隐患问题. 一.标准输入输出: 1.首先,我们来看下标准输入输出 impor ...
- List<Integer>.remove()的一个小细节
不废话,先上代码: ArrayList<Integer> col = new ArrayList<Integer>(); System.out.println("In ...
- Caused by: java.lang.ClassNotFoundException[android的终极解决错误]
from:http://blog.csdn.net/changemyself/article/details/7861525 08-13 18:29:22.924: E/AndroidRuntime( ...
- Android软键盘的隐藏显示研究
http://winuxxan.blog.51cto.com/2779763/522810 全局推: android:windowSoftInputMode="adjustResize&qu ...
- Vue.js_getter and setter
computed 计算属性: 1.get 读取 <div id="test2"> <input type="text" v-model=&qu ...
- python2--升级python3
先安装开发工具包: yum -y group install "Development Tools" 安装Python的依赖包: yum -y install openssl-de ...