昨晚升级了2.2,遇到了一堆的问题。我相信大家多多少少都会遇到。而且google无门,翻遍了找不到解决方法。只能自己动手了。希望大家可以少走弯路。
1. 在generate path的时候,比如 user_path(@user)的时候,总是遇到 can not convert fixnum to String
解决: 检查你所有model上的to_param方法,看看是否有数字类型返回,如果有将其改成String
2. 如果你用了restful authentication 的话,你可能会遇到当用户注册的时候,通过email发出的activation_code和数据库里存的不一样。
解决方法1:这个问题非常蹊跷,user_observer里看不出任何问题。倒是activation_code的产生方法是时间相关的,如果你改成一个固定字符就不存在此问题,说明user_observer里用的不是db里的值,那么就在observer的每一个事件之后都加上:user.reload
解决方法2: 上面的解决方式实在无语。后来我把db/schema.rb删了,重新migrate。问题消失。
3. theme_support 不工作了。
解决方法:theme_support hack了action view的rend_file方法,这个方法在2.2中已经不存在了。最简单的修改方法是:
alias_method :theme_support_pick_template, :_pick_template
# Overrides the default <tt>Base#render_file</tt> to allow theme-specific views
def _pick_template(template_path)
search_path = [
"#{RAILS_ROOT}/themes/#{controller.current_theme}/views", # for components
"#{RAILS_ROOT}/themes/#{controller.current_theme}", # for layouts
"#{RAILS_ROOT}/app/views",
]
self.view_paths = search_path
theme_support_pick_template(template_path)
end
同样,修改过的action mailer的 render方法:
def render(opts)
body = opts.delete(:body)
body[:current_theme] = @current_theme
if opts[:file] && (opts[:file] !~ /\// && !opts[:file].respond_to?(:render))
opts[:file] = "#{mailer_name}/#{opts[:file]}"
end
begin
old_template, @template = @template, initialize_template_class(body)
layout = respond_to?(:pick_layout, true) ? pick_layout(opts) : false
@template.render(opts.merge(:layout => layout))
ensure
@template = old_template
end
end
4. xss_terminate 不工作了。出问题的语句很奇怪:self[field] = RailsSanitize.full_sanitizer.sanitize(value)
而RailsSanitize是完全include ActionView::Helpers::SanitizeHelper。所以它报错说什么full_sanitize不存在简直就是莫名。还请高人指点一二。
解决方法:遇到RailsSanitize的地方就改成HTML::FullSanitizer.new
5. engines plugin 挂了
解决方法:其实仔细想想我是不是真的需要它了。我只用到了一个plugin是model在plugin里面的,那么我就把这些model cp到app/model下面了。把engines删了干干净净的。心情也好了很多!
6. 用macos的朋友才会有。rails 2.2把db adapter拿掉了,一定要求你用比如mysql gem. 如何在苹果上面安装呢?
解决方法:sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
分享到:
相关推荐
通常,较新的Rails版本支持较新的MySQL版本,但旧版本的Rails可能需要降级MySQL或升级Rails以解决问题。 总结来说,解决Rails与MySQL连接问题涉及检查配置文件、安装和更新依赖、确保系统库完整、确认服务状态和...
简介 Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。...Rails 开发人员很少或者可能从未遇到
标题中的“rails飞信 gem plugin api 插件的问题解决方案”涉及到的是在Ruby on Rails框架下,使用特定的gem(一种Ruby的库或插件)来集成飞信API时遇到的问题及解决方法。飞信是中国移动推出的一种即时通讯服务,...
- 如果你遇到任何问题,查阅 Rails 2.3.2 的官方文档或社区资源,例如 Stack Overflow 上的相关问题,可能会有所帮助。 6. **安全与升级** - 考虑到 Rails 2.3.2 已经非常过时,可能存在大量的安全漏洞。在生产...
Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...
2. **升级行为的变化:** 升级过程中可能会遇到一些新特性或变更,这些变化可能需要通过重构代码来适应新的行为。例如,某些旧的功能可能已经不再适用,或者有更好的方式实现。 3. **利用新功能实现旧功能:** 升级...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson...如果可能,建议升级到更现代的版本,以利用最新的技术和最佳实践。但是,如果你正在维护一个老项目或学习历史版本的Rails,这个环境包将是一个宝贵的资源。
### Windows 下安装或升级 Rails 的常见问题与解决方法 在 Windows 平台上进行 Ruby on Rails 开发时,可能会遇到各种各样的安装问题。本文将详细解释一个常见的问题:“在 Windows 下安装或升级 Rails 时,gem ...
描述中提到的博文链接指向了一个ITEYE博客文章,尽管具体内容未提供,但通常这样的博客可能会包含Rails的使用技巧、最佳实践、新版本更新或者特定问题的解决方案。 标签 "源码" 暗示了可能涉及Rails的源代码分析或...
需要注意的是,配置过程中可能会遇到各种问题,如网络不稳定、版本不兼容等,解决这些问题需要耐心和细心。此外,持续学习和交流也是提高技能的关键,可以参考作者的博客或参与相关的社区讨论,例如Sharetronix微博...
标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...
本手册还收录了多个真实的升级案例,通过这些案例可以了解到实际升级过程中遇到的问题及解决方法: - **案例一**:一个小型电子商务网站从Rails 2升级到Rails 3的过程,包括遇到的主要挑战及解决方案。 - **案例二**...
Rails 2.2不仅修复了诸多bug,还加入了一系列新功能,这些改进对于初次接触Rails或正在考虑将项目迁移到Rails 2.2的人来说非常重要。 #### 新增功能详解 ##### 国际化(i18n)支持 Rails 2.2引入了一个强大的国际化...
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
它可能涵盖了技术选择的原因、遇到的问题及解决方案、性能优化、用户体验设计等方面,是整个开发工作的总结和理论支持。 总的来说,Ruby on Rails实例开发涉及到一系列技术,包括Ruby编程、Rails框架的使用、SQLite...
Rails的路由系统将URL映射到控制器的行动上,如`/sign_up`可能对应`users#new`,用于创建新用户。`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图模板**: 视图使用...
遇到问题时,查阅官方文档、在线社区(如Stack Overflow)以及搜索引擎都是解决技术问题的有效途径。在开发过程中,不断学习和实践,理解Rails的工作原理和最佳实践,将有助于提高开发效率和代码质量。
1. **优化性能**:Rails应用在处理大量请求时可能会面临性能挑战。书中会介绍如何通过缓存(如Action Cache和Page Cache)、数据库查询优化、资产管道优化等手段提升应用性能。 2. **复杂的路由**:Rails的路由系统...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助...随着对Rails的深入了解,你将会发现更多高级特性和应用场景,为实际项目开发提供更多可能性。