`
RunUpwind
  • 浏览: 92303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby on rails 读写yml文件(中文utf-8问题)

阅读更多

有一些配置,想通过WEB界面管理。但没有必要存入数据库,用yml文件方便些。

 

读文件比较简单:

 def self.get_config
    YAML::load(File.read(Rails.root.to_s + '/config/points_base_rules.yml'))
  end

 

读取对象之后,就可以显示在form上了,编辑之后,put 到server, server再将数据写入yml

 

写文件方法:

def self.save(rules)
    result = true
    begin
      File.open(Rails.root.to_s + '/config/points_base_rules.yml', 'w') { |f|
        YAML.dump(rules, f)
      }
   rescue => err
     logger = Logger.new(Rails.root.to_s + '/log/err.log')
     logger.error err
     logger.close     
     result = false
   end
   result
  end
 

这种方法在需要写的数据中包含中文时,会出现异常:

<Encoding::UndefinedConversionError: "\xE7" from ASCII-8BIT to UTF-8>

 

后来google了好久,终于找到解决方法:

gem install ya2yaml
 

  在Gemfile里:

gem 'ya2yaml'

 

然后修改写文件的方法:

require 'ya2yaml'

def self.save(rules)
    result = true
    begin
      File.open(Rails.root.to_s + '/config/points_base_rules.yml', 'w') { |f|
        #YAML.dump(rules, f)
        f.puts rules.ya2yaml
      }
   rescue => err
     logger = Logger.new(Rails.root.to_s + '/log/err.log')
     logger.error err
     logger.close     
     result = false
   end
   result
  end

 问题解决!

 

 

 

分享到:
评论

相关推荐

    simple-api-server-rails

    3. **config** 目录:包含Rails的配置文件,如数据库配置(database.yml)、环境变量(secrets.yml)和路由配置(routes.rb)。 4. **app** 目录: - **models**:包含数据模型,定义业务逻辑和数据库交互。 - **...

    Redmine0.8.X for Windows安装于配置

    - **权限问题**: 确保所有文件和目录具有正确的读写权限。 - **依赖库问题**: 检查是否所有必要的依赖库都已正确安装并配置。 - **环境变量问题**: 确认所有路径都已正确添加到环境变量中。 - **数据库连接问题**: ...

    redmine-2.6.7 For Linux版本

    Redmine 是一个开源的、基于Web的项目管理应用程序,它由Ruby on Rails框架构建。这个“redmine-2.6.7 For Linux版本”安装包是专为Linux系统设计的,旨在帮助用户在Linux环境中部署和管理项目。下面将详细介绍...

    linux下的redmine搭建.pdf

    安装完成后,登录MySQL (`mysql -u root -p`),创建一个名为`redmine`的数据库,并设定字符集为utf8。创建一个名为`redmine`的用户,并为其分配访问`redmine`数据库的权限,设置合适的密码。 最后,下载Redmine的源...

    Centos7上部署Redmine v3.3手册

    CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'all-suit.com'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; FLUSH PRIVILEGES; ``` 这部分操作...

    LINUX下的REDMINE搭建[归纳].pdf

    在Linux环境下搭建Redmine是一个涉及多个步骤的过程,主要涵盖了Ruby的安装、RubyGems的安装、Rails框架的安装、MySQL数据库的配置以及Redmine本身的安装和配置。以下是对这些步骤的详细说明: **一、Ruby的安装** ...

    redmine安装for linux(内含全套安装文件及安装文档)

    Redmine 是一个开源的项目管理工具,主要用于任务追踪、问题管理、文档管理和版本控制集成。在Linux环境下安装Redmine,可以充分利用Linux系统的稳定性和安全性,为团队协作提供强大的支持。以下是一个详细的Redmine...

    active_record_sharding-old:基于模算法的ActiveRecord着色数据库库

    ActiveRecordSharding 待办事项:撰写宝石描述 安装 将此行添加到应用程序的Gemfile中: ... 分片配置config/shards.yml development: # Rails.env user: # shard name - user_shard_1_development

    config_files:我的配置文件

    `.yml`(YAML Ain't Markup Language)文件,常用于存储结构化的配置数据,便于读写和解析。在"config_files-master"这个目录下,可能包含的就是这样的文件。 1. **Ruby配置文件(.rb)** - `.rb`文件可以用来定义...

    摩托车_MVC

    在"Motorbikes_MVC-master"这个压缩包中,可能包含了项目的所有源代码,如Ruby文件(`.rb`)、模板文件(`.html.erb`)、样式表(`.css`)、配置文件(`.yml`)以及可能的测试文件(`.rb`)。解压后,我们可以查看...

    redmine 3.1版本

    Redmine 是一个开源的、基于Web的项目管理和问题跟踪系统,它使用Ruby on Rails框架构建。3.1版本是Redmine的一个稳定版本,提供了一系列改进和新特性,旨在提升项目协作和任务管理的效率。 在将Redmine 3.1版本...

    mongorails:在Rails应用中使用mongoDB测试应用

    MongoRails是在Ruby on Rails应用中使用MongoDB作为数据存储的框架。MongoDB是一个NoSQL数据库,它使用文档型数据模型,提供了灵活性和高性能,而Rails是Ruby语言的一个流行Web开发框架,基于MVC(模型-视图-控制器...

    tasky_project

    4. **文件和目录操作**:项目可能需要读写本地文件来持久化任务数据,或者处理项目目录结构。 5. **命令行界面**:如果项目是一个 CLI 应用,那么会涉及到 `gets` 和 `puts` 交互,或者更复杂的 TTY 库如 `tty-...

    Seamless_database_pool:在ActiveRecord中添加对主从数据库集群的支持以提高性能

    在Ruby on Rails应用中,数据访问层主要由ActiveRecord库负责,它是一个强大的ORM(对象关系映射)工具,能够方便地将数据库操作转化为面向对象的代码。然而,随着应用程序的增长,单一数据库服务器可能无法满足高...

    octopus_replication_example:示例 Rails 应用程序使用 Octopus 库启用对 ActiveRecord 复制数据库的支持

    该应用程序有 1 个主节点(在 database.yml 中指定)和 4 个从节点(在 shards.yml 中指定)。 功能列表: 所有写入都将发送到主站,读取查询将发送到从站。 除非您有交易,否则所有查询都将发送给 master。 该...

Global site tag (gtag.js) - Google Analytics