`
yangzhihuan
  • 浏览: 169197 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Ubuntu Linux下ruby 1.9.1和Rails 2.3升级记录

阅读更多

安装ruby

  1. 首先不再使用ubuntu的apt-get安装ruby,自己编译安装,这样虽然不能使用ubuntu系统apt-get的升级功能对ruby进行升级,但胜在自由度最高,想怎么折腾就怎么折腾.
  2. http://www.ruby-lang.org/zh_CN/downloads/ 下载ruby 1.9.1的源代码.
  3. #解压文件
    tar vfxz ruby-1.9.1-p0.tar.gz
    
    #进入解压后的文件夹
    cd ruby-1.9.1-p0/
    
    #编译源码,在编译之前,应该先对/usr/local/ruby-1.9.1文件夹设置权限.
    ./configure --prefix=/usr/local/ruby-1.9.1
    
    #大名鼎鼎的 make 和 install
    make && make install
    
    #设置PATH路径,把自己安装的ruby放在系统PATH前面,避免调用操作系统自带的ruby
    export PATH=/usr/local/ruby-1.9.1/bin:$PATH
    #我在 ~/.profile 文件中增加了这样的代码:
    if [ -d "/usr/local/ruby-1.9.1/bin" ] ; then
        PATH="/usr/local/ruby-1.9.1/bin:$PATH"
    fi
    然后 注销 再登陆一次.
    
    #如无意外
    
    ruby -v
    #ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
    
    #ruby 1.9.1安装成功了.
     
  1. 自 己编译安装的好处就是,当下次ruby 1.9.2升级的时候,如果你不想升级,你完成可以无视.如果你想尝鲜,你可以下载ruby 1.9.2,然后重复一下上面的功能,不同的只是把它安装到ruby-1.9.2文件.再把ruby-1.9.2/bin路径设置到PATH前面,完全是 无痛升级,并且可以自由切换;如果你想删除这个版本,只要 rm -Rf ruby-1.9.1,绝不会留下任何疤痕,非常干净,爽就一个字.
  2. 升级到ruby 1.9.1后,不用再另外单独安装 rubygems 了,在ruby 1.9.1下,rubygems已经是默认的ruby包管理程序,查看一下ruby-1.9.1/bin,你会发现gem已经静静地在那里了.

#执行
gem -v
#1.3.1,gem的版本

#再执行
gem list

#你会发现什么都没有,当然啦,这个新的ruby,你还没有安装任何gem包呢.
 



安装Rails

  1. gem install rails -y #从远程安装Rails和所有的依赖.正宗的一键安装,方便快捷.将会安装如下的gem:
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
6 gems installed
Installing ri documentation for activesupport-2.3.2...
Installing ri documentation for activerecord-2.3.2...
Installing ri documentation for actionpack-2.3.2...
Installing ri documentation for actionmailer-2.3.2...
Installing ri documentation for activeresource-2.3.2...
  1. 再次执行 gem list,可以看到如下信息:
*** LOCAL GEMS ***

actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
rails (2.3.2)
rake (0.8.4)
  1. Rails 2.3.2升级成功了.


下面看看怎么把已有项目升级到当前的Rails版本(2.3.2)

  1. 我是使用Nebeans 6.5进行开发的,顺便把Netbeans 升级到6.5.1版本.
  2. 在Netbeans选中你的项目,右键,选择 Properties ,把 Ruby Platform改为 Ruby 1.9.1 p0就可以了.(如果没有,请增加).
  3. 直接使用 rake rails:update 任务进行升级,结果却令我失望了,加上 --trace 选项可以看到,在新版本下boot.rb文件会报错,错误信息如下:
config/boot.rb:86:in `load_rubygems'
config/boot.rb:52:in `load_initializer'
config/boot.rb:38:in `run'
config/boot.rb:11:in `boot!'
config/boot.rb:109:in `<top (required)>'
Rakefile:4:in `require'
Rakefile:4:in `<top (required)>'
 
  1. 我也不想去查错误,于是新建了一个Rails项目(建一个空目录,进行目录下,然后 rails .),把新项目的 boot.rb 文件拷贝过来,然后执行 rake rails:update 成功了!
  2. 有一个特别的地方,我在一个rb文件的一个正则表达式中使用了全角的逗号,居然不能启动服务器,报如下错误: invalid multibyte char (US-ASCII) (SyntaxError).先把这个去掉,保证能启动再说.
  3. 还 是不能启动,提示:no such file to load -- openssl (RuntimeError) . 其实这个提示误人不少,一般都以为没有安装openssl的ruby gem,如果安装的是系统自带版的ruby的话,要执行的是: sudo apt-get install libopenssl-ruby1.9 
  4. 由于我是自己编译的ruby版本,所以要这样做:
       1. sudo apt-get install openssl libssl-dev
       2. cd ruby_source_dir(就是编译ruby的目录)/ext/openssl
       3. ruby extconfig.rb
       4. make && make install
     
  5. 还是不能升级到ruby 1.9.1,因为我使用中的一个重要的gem:ferret 现在不支持ruby 1.9.1.所以只好继续使用 ruby 1.8.7,但是rails升级到2.3.2.


在ubuntu 下升级 rails.

  1. 由于rails 2.3.2要求rubygem的版本是1.3.1,在我的系统中的gem的版本是1.2.0,必须得升级.由于是使用ubuntu 源安装的gem,因此不能使用 gem update --system
  2. http://rubyforge.org 下载rubygems 1.3.1版本.
  3. 解压下,进行解压目录,执行一下 sudo ruby setup.rb , 再执行一下 gem -v,发现已经升级到了1.3.1版本.
  4. gem update rails 升级就完成了.
  5. gem升级后,gem list为空,要重新安装需要的gem包.


项目升级的一个问题:

  1. 自己对ActiveRecord的一个open class增强(opar.rb文件中)
  2. 未 升级前放在 config/envirment.rb 文件的 Rails::Initializer.run do |config| require File.join(File.dirname(__FILE__),'..', 'lib','extend','opar') #加载我的增强代码  end 块当中,升级后启动出错:
    /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:416:in `initialize_database': undefined method `configurations=' for ActiveRecord::Base:Class (NoMethodError)  
       from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:141:in `process'  
       from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in `send'  
       from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in `run'  
       from /home/yanghuan/dev/my_project/config/environment.rb:13  
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'  
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'  
        from /home/yanghuan/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'  
        from /home/yanghuan/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:521:in `new_constants_in'  
       from /home/yanghuan/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'  
       from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:84  
      from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'  
       from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'  
       from script/server:3
 

 

  1. 修改后:在 config/envirment.rb 文件的 Rails::Initializer.run do |config|   end require File.join(File.dirname(__FILE__),'..', 'lib','extend','opar') #加载我的增强代码.
  2. 出现这个错误的原因是:在opar.rb中修改了ActiveRecord::Base类的定义,而在Rails::Initializer.run do |config|  ...  end执行完成之前,Rails还没有加载ActiveRecord,故而出错.
  3. 代码放在block外面了.这下还启动了.
  4. 至此升级顺利完成.

 

分享到:
评论
11 楼 lemonweirui 2010-03-18  
为啥子我的fedora在编译ruby1.9.1p378时,一直报错(关于ssl的)
10 楼 vb2005xu 2009-10-08  
http://vb2005xu.iteye.com/blog/482832
9 楼 jerry 2009-09-08  
下一站,火星 写道
jerry 写道
说了半天,这是升级没成功呀。


呵呵,早就升级到2.3.2了。

2.3.3下面的postgre-pr驱动有bug,不建议使用




我是说你的Ruby 1.9.1升级不成功


昨天我在windows下升级ruby1.9.1, Rails 2.3.4发现问题一堆,解决了中文问题后,当打开网页时,直接报ruby的解释器崩溃了。
8 楼 下一站,火星 2009-09-08  
火星叔叔马丁 写道
下一站,火星 写道
jerry 写道
说了半天,这是升级没成功呀。


呵呵,早就升级到2.3.2了。

2.3.3下面的postgre-pr驱动有bug,不建议使用


你们项目里也开始用postgrel了?


是的,postgre很好用
http://awesomeful.net/posts/45-postgresql-rails-and-why-you-should-care
7 楼 下一站,火星 2009-09-07  
jerry 写道
说了半天,这是升级没成功呀。


呵呵,早就升级到2.3.2了。

2.3.3下面的postgre-pr驱动有bug,不建议使用
6 楼 jerry 2009-09-07  
说了半天,这是升级没成功呀。
5 楼 phoenix520 2009-03-25  
现在困扰我的就是MySQL和Ferret这两个Gem,貌似这两个gem都已经年久失修,不知道是不是已经不会再发布支持1.9.1的版本了。
4 楼 花花公子 2009-03-22  
QuakeWang 写道
-KU之前试过,rails带的tmail下utils.rb还是会报一个invalid multibyte char,因为这个文件里面有\x00-\x1f\x7f-\xff这样格式的正则表达式,还没有仔细看其他文件会不会有类似问题。

Rails 2.3.1就有这个问题,以为2.3.2把这个问题解决了才号称ruby1.9兼容的呢。
Quake你不怕麻烦 gem install tmail 更新到tmail 1.2.3.1看看有没有解决这个问题。
3 楼 QuakeWang 2009-03-22  
-KU之前试过,rails带的tmail下utils.rb还是会报一个invalid multibyte char,因为这个文件里面有\x00-\x1f\x7f-\xff这样格式的正则表达式,还没有仔细看其他文件会不会有类似问题。
2 楼 花花公子 2009-03-22  
QuakeWang 写道
invalid multibyte char 可以通过在文件头添加magic enconding comment解决,
不过如果文件很多的话,都这样处理会非常郁闷,而且感觉也太傻了。
ruby 1.9对于multibyte的编码支持非常诡异,还没有找到一个合适的方法。

ruby1.9 是 ruby -KU ***.rb 强制用unicode编码ruby文件
所以可以试试 ruby -KU script/server 启动服务器,相应的环境变量 RUBYOPT="-w -KU"。
1 楼 QuakeWang 2009-03-22  
invalid multibyte char 可以通过在文件头添加magic enconding comment解决,
不过如果文件很多的话,都这样处理会非常郁闷,而且感觉也太傻了。
ruby 1.9对于multibyte的编码支持非常诡异,还没有找到一个合适的方法。

相关推荐

    Ruby1.9.1released.zip

    .9.1是ruby 1.9系列以来的第一个production ready的版本,这也标志着Ruby社区从此迈向了1.9的时代。 ruby 1.9是ruby发展历史上的一个里程碑版本: 1、ruby 1.9首次引入字节...rails的下一个版本Rails 2.3将支持ruby ...

    ruby安装升级及命令自行编译安装非APTGET方式安装升级的办法

    Ubuntu用户通常会依赖于包管理工具`apt-get`来安装Ruby,这种方式虽然简单便捷,但在某些情况下可能无法满足定制化的需求。本文将详细介绍如何通过手动编译的方式安装Ruby,并提供一种灵活的升级策略。 #### 手动...

    ruby1.9.1文档和一本pdf

    4. **库和框架**:介绍 Ruby 1.9.1 集成的标准库和常用的第三方库,如ActiveRecord、Rails框架等。 5. **性能优化**:给出实践建议,如何利用新特性编写高效的代码。 6. **错误处理和调试**:讨论新错误系统,提供...

    适合Ruby 1.9.1的Ruby-FCGI源码包

    因此,这个特别的源码包是针对Ruby 1.9.1进行过适配和修改的,确保在该版本下能够顺利安装和运行。 在源码包`ruby-fcgi-0.8.7`中,你可以期待找到以下关键文件和目录: 1. `ext/`: 这个目录包含了Ruby-FCGI的C语言...

    【工作点滴】用VS 2010 编译 Ruby 1.9.1

    标题“【工作点滴】用VS 2010 编译 Ruby 1.9.1”涉及的是在Visual Studio 2010环境下编译Ruby编程语言的1.9.1版本。这是一个关于软件开发过程中的实践操作,尤其是针对Windows平台上的C/C++开发。在Windows上编译...

    ubuntu系统指定位置一键安装pcl1.9.1和有关的依赖库

    1.chmod + x pcl.sh#增加可执行权限 2../pcl.sh#安装在/usr/local/pcl/pcl-1.9.1 3.sudo gedit .bashrc 4.添加export PCL_DIR=/usr/local/pcl/pcl-1.9.1

    ruby-1.9.1-p0-i386-mswin32.zip

    Ruby是一种面向对象的脚本语言,由日本人松本行弘(Yukihiro ...Ruby与Rails框架的结合,使得它在Web开发领域具有很高的知名度和实用性。同时,由于其开源和跨平台的特性,Ruby也成为了许多开发者首选的编程语言之一。

    最新版linux consul_1.9.1_linux_amd64.zip

    这个名为"最新版linux consul_1.9.1_linux_amd64.zip"的压缩包文件,显然包含了适用于Linux操作系统的Consul 1.9.1版本,且是针对64位(AMD64)架构的。在深入探讨Consul的知识点之前,让我们先了解一下什么是服务...

    ruby-1.9.1-p0-i386-mswin32.rar

    这个版本(p0)意味着它是1.9.1主版本下的一个特定补丁级别,通常包括了一些错误修复和优化。 Ruby的安装包内可能包含以下组件: 1. Ruby解释器:这是执行Ruby代码的核心组件,允许开发者运行编写好的Ruby程序。 2....

    windows下安装Ruby 1.9 二进制zip包

    在Windows环境下安装Ruby 1.9,通常会涉及到编译环境的配置,因为Ruby的源码需要通过编译才能在Windows系统上运行。不过,如果你选择的是预编译的二进制zip包,这个过程就会简化很多。下面,我们将详细讨论如何通过...

    flann-1.9.1.zip

    同时,理解如何根据数据的维度和规模选择合适的算法和参数设置也非常重要,因为这些因素会直接影响搜索效率和结果精度。 总的来说,FLANN是一个强大的工具,能够帮助开发者在大数据集上快速执行近似最近邻搜索,...

    Ruby1.91_Stable和Gem1.3.5

    Ruby 1.9.1 和 Gem 1.3.5 是 Ruby 编程语言的关键版本,它们在软件开发中扮演着重要角色。Ruby 1.9.1 是 Ruby 的一个稳定分支,它引入了许多改进和新特性,提升了性能并增强了语言的规范性。 Ruby 1.9.1 的主要更新...

    quora, Quora.com 与 Ruby on Rails ( 不再维护) 类似.zip

    quora, Quora.com 与 Ruby on Rails ( 不再维护) 类似 Quora克隆在 Rails 上的ruby 中写入。要求首先安装软件Linux ( 推荐 Ubuntu 10.10 ) 。ruby 1.9.2 ( 不支持 1.9.1或者 1.8 )MongoDB 1.8Redis 2.

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    SpringBoot + Apache Shiro1.9.1 最新版本详细教程,基于RBAC角色访问、安全管理框架、用户角色权限

    4、优点:快速上手、全面支持验证、授权、加密和会话、灵活自定义设计、支持web环境、可以无缝集成spring等优点。可以用来用户验证、用户授权、用户session管理、安全加密等 5、基于RBAC五张表:用户表 tb_user、...

    ubuntu版本交叉编译器

    ubuntu版本交叉编译器

    Docker 1.9.1 Ubuntu14安装文件

    Ubuntu 14 操作系统下 Docker 1.9.1离线安装文件,安装之后即可使用Docker相关服务部署自己的集群应用。

    linux,ubuntu常用命令,pip,conda,shell命令

    linux ubuntu常用命令总结(pip,conda,shell命令行等)

    rh-maven33-maven-plugin-build-helper-1.9.1-2.3.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics