`
together
  • 浏览: 219210 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

初用ruby的几个注意事项

    博客分类:
  • ruby
阅读更多
一:
when i installed ruby&rails&gem mysql2.7,then run:
rails test
cd test
ruby script/generate scaffold product

console report:
error Before updating scaffolding from new DB schema, try creating a table for your model (Product)

search google for a long time,then resolve it with below command:
in mysql,must create table name xxxs,for example:products
then run:
ruby script/generate scaffold product
visit:http://localhost:3000/products/list
it's ok.
二:数据库字符集
使用oci,需要在本机环境变量中设置NLS_LANG为数据库的字符集。
使用mysql,GBK时,为正常处理中文,需要在database.yml中设置encoding: gbk

页面编码的处理,如果想强制页面使用GBK编码,则需要修改:
class ApplicationController < ActionController::Base
before_filter :set_charset
def set_charset
@headers["Content-Type"] = "text/html; charset=GBK"
end
end

三:UTF-8的处理
转载自:http://www.railscn.com/about45.html
结合RubyOnRails官方Wiki上的一些介绍和自己实践写的。这个方法就是在使用rails的内置的长度校验的时候要考虑到中文一般占用3个字符。

Ruby本身不支持UTF-8,但是我们可以使用一些办法使用8bit的字符来储存UTF-8编码后的字符串.但是这会导致一些字符串函数出现问题,可以通过使用jcode包里的函数来替换原来的字符串函数,如length可以用jlength替换。
1、首先,我们需要在public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode
2、然后,需要使用一个before_filter来输出http头,表示使用utf-8字符集。
class ApplicationController < ActionController::Base
before_filter :set_charset

def set_charset
@headers["Content-Type"] = "text/html; charset=utf-8"
end
end
3、接着,如果要在Safari浏览器里使用rails的ajax帮助函数,则必须加入以下代码
class ApplicationController < ActionController::Base
after_filter :fix_unicode_for_safari

# automatically and transparently fiixes utf-8 bug
# with Safari when using xmlhttp
def fix_unicode_for_safari
if @headers["Content-Type"] == "text/html; charset=utf-8" and
@request.env['HTTP_USER_AGENT'].to_s.include? 'AppleWebKit' then
@response.body = @response.body.gsub(/([^\x00-\xa0])/u) { |s| "�%x;" % $1.unpack('U')[0] }
end
end

4、另外,可能需要调整数据库的设置能够存储utf-8字符串。

5、必须把rb源文件以及rhtml等模版文件都保存为utf-8格式。
这样你就可以直接在rb源文件里输入中文了。


分享到:
评论

相关推荐

    ruby-1.8.7-p72-i386-mswin32.zip

    1. **README.1st**:这通常是一个包含软件基本信息、安装指南、许可信息和其他重要注意事项的文本文件。对于Ruby的安装和配置,这个文件会提供关键的指导。 2. **MANIFEST**:这个文件列出了压缩包内所有文件的完整...

    Ruby-ApartmentRack和Rails应用的数据库多租户

    虽然Apartment简化了多租户的实现,但仍有几个限制需要注意。例如,全局数据(如系统设置)需要特殊处理,因为它们不归属于任何特定租户。此外,联表查询和索引优化可能需要额外的考虑,以确保性能不会受到显著影响...

    ruby编码转换

    #### 五、编码转换注意事项 在进行编码转换时需要注意以下几点: - **确保源字符串与源编码匹配**:如果源字符串与声明的源编码不匹配,则转换后可能会出现乱码。 - **了解目标编码的特点**:不同的编码方式支持的...

    ruby javatoc++

    在这样的背景下,我们可以详细探讨以下几个相关的知识点: 1. **Ruby语言**:Ruby是一种面向对象的、动态类型的编程语言,以其简洁和可读性强的语法著称。它支持多种编程范式,包括面向对象、函数式和过程式编程。 ...

    Game Programming with Python Lua And Ruby

    - 通过几个实际项目来加深对理论知识的理解。 - 分析项目中的问题并提出改进方案。 综上所述,《Game Programming with Python Lua And Ruby》这本书不仅涵盖了使用这三种语言进行游戏开发的基础知识,还深入探讨...

    Ruby on Rails Bible.pdf

    在部署Rails应用到生产服务器之前,有许多事项需要注意。本章将讲述如何配置合适的服务器环境、选择适当的部署工具,以及如何确保应用能够在生产环境下稳定运行。 ### 附录A:附加资源 除了正文内容外,本书还提供...

    Ruby-不gitcommit当你drunk时

    标签“Ruby开发-其它杂项”表明这个话题虽然与Ruby语言有关,但也涵盖了更广泛的开发实践和团队协作注意事项。无论使用哪种编程语言,良好的代码管理和团队沟通都是成功项目的基石。所以,即使在闲暇时间,开发者也...

    浅析Ruby中的DATA对象

    3. **注意事项:** - `DATA.read`方法仅读取一次,之后再调用将会返回空字符串。 - 如果需要多次读取`DATA`对象的内容,应先调用`DATA.rewind`方法将读取指针重置到开头。 - `__END__`标记之后的内容可以包含任何...

    后端开发技术要点&详细案例*注意事项

    在后端开发领域,有几个核心技术和概念是必须掌握的,它们分别是: 1. **服务器端编程语言**:这是构建任何后端应用程序的基础。常见的语言有Python、JavaScript(Node.js)、Java、Ruby和PHP等。每种语言都有其独特...

    最新版bundler,windows下可运行

    **Bundler:Ruby的依赖管理工具** Bundler是一款在Ruby编程语言中...通过上述步骤和注意事项,Windows用户可以充分利用Bundler的强大功能,无论是通过Cygwin还是Visual Studio 2013,都可以高效地管理Ruby项目的依赖。

    gsa_auctions_gem:Ruby 访问 GSA Auctions API

    几个基本注意事项:API 的速率限制目前为每天 5,000 次调用和每 5 秒 5 次调用。 随着我们进一步了解 API 使用的影响,我们将相应地调整限制,并允许有特定需求的个人用户拥有适合其使用的自定义速率限制。 您可以...

    Ruby生成随机数的方法总结

    #### 四、注意事项 - **PRNG全局状态**:需要注意的是,Ruby中的随机数生成器是一个全局对象,所有调用都共享同一状态。这意味着对种子或其他状态的修改会影响到后续的所有调用。 - **性能与安全性**:虽然Ruby的...

    archaeopteryx:Ruby MIDI DJinglive-coding 东西

    我几年前写了这个库,此后用和重写了两次。 代码很乱,我今天绝对更喜欢 Clojure(带有 Overtone)进行音乐黑客攻击。 但是如果你想玩这个,无论如何,跳进去。 midi_files分支实际上比master 。 对于那个很抱歉。...

    js 数组实现一个类似ruby的迭代器

    从给定的文件内容中,我们可以提炼出以下几个关键知识点,这些都是关于如何在JavaScript中实现一个类似Ruby的迭代器功能: 1. 基本实现:JavaScript数组的迭代可以通过Array的原型方法来实现。例如,可以扩展Array...

    redis集群搭建与环境.docx

    Redis 是一个高性能的键值数据库,常用于缓存和数据持久化。在分布式环境中,为了...总之,搭建 Redis 集群是一项涉及多个步骤和技术的复杂任务,但遵循上述步骤和注意事项,可以构建一个稳定、高效的数据存储环境。

    Apress.Beginning.Rails.from.Novice.to.Professional.2007.

    本书的核心内容可能包括以下几个关键知识点: 1. **Ruby基础**:Rails是用Ruby语言构建的,因此理解Ruby的基础语法和特性至关重要。这包括变量、数据类型、控制结构、类和对象、模块、方法等基础知识。 2. **Rails...

    cucumber+Firewatir环境搭建

    在搭建Cucumber与FireWatir的环境时,我们需要完成以下几个步骤: 1. **安装Ruby**: Cucumber是用Ruby编写的,因此首先确保系统已经安装了Ruby。如果没有,可以从官网(https://www.ruby-lang.org/)下载并按照指南...

    深入剖析Ruby设计模式编程中对命令模式的相关使用

    #### 四、命令模式的实现注意事项 1. **智能程度**:在设计命令对象时要考虑其应该具备多大的智能程度。 2. **撤销和重做**:实现撤销和重做功能时需要特别注意,因为并非所有操作都支持撤销,比如删除文件这类破坏...

    linner的绿色版

    对于"linner"的绿色版来说,Readme.txt很可能包含了如何在Windows 10上运行和配置"linner"的具体步骤,以及可能的注意事项和问题解决方案。 2. Ruby21:这可能是Ruby编程语言的一个版本,版本号为2.1。Ruby是一种...

    Java与脚本语言的整合与应用.pdf

    脚本语言能够进行快速简单的开发并具有以下几个特点:(1)脚本语言有特色的语法使得更快更简便的应用写作成为可能,并使得完成特殊和具体的任务变得更加容易。(2)大多数的脚本语言都是解释型的编程语言且没有配置...

Global site tag (gtag.js) - Google Analytics