`

升级到rails3+ruby1.9.2过程中遇到的各种问题

阅读更多
由于ubunut系统中自带的rails和ruby版本都比较低,所以打算干掉以前的版本重新编译,遇到了N多麻烦,倒也是好事,又认识到了很多问题,明白了一些东东的含义

一 升级ruby1.8.7到1.9.2

首先下载ruby-1.9.2
 wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
 
  tar -zxvf ruby-1.9.2-p0.tar.gz
  cd ruby-1.9.2-p0
  .configure -prefix=/usr/local/ruby # 指定安装路径
  make
  make test 
  make install               #编译并安装
  sudo ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby # 建立一个软链接

  一切顺利,不过不知道咋回事,貌似是昨天搞gem的时候,又把1.8重新弄回来了
  今天,重启电脑之后,还是1.8,1.9也有,乱七八糟的,决定重来
  于是,修改全部步骤,删除了usr/local/ruby 删除 usr/bin/ 下的所有ruby
  重新上面的步骤(ln那条命令除外)
  最后修改了一下环境变量path 编辑文件 etc/environment
 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"


  修改完毕,重启系统,搞定

 ruby -v
 ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]

ruby安装完成

二 GEM的升级

运行gem命令,出错提示:依赖的ruby1.8.7 出现错误,这个是以前残留的
于是乎 /usr/bin 下的一系列gem gem1.8 gem×× 之类的全部干掉

在安装ruby1.9.2之后gem已经安装了
因为上面设置了path,gem在usr/local/ruby/bin目录下
所以删除残留的那些后运行gem依然可以
  gem -v
  1.3.7

但是运行gem list
出现错误
 ERROR:  Loading command: list (LoadError)
    no such file to load -- zlib
 ERROR:  While executing gem ... (NameError)
    uninitialized constant Gem::Commands::ListCommand


搜了一下:(http://javaeye.shaduwang.com/?www/topic/743850),说是缺少zlib
  (1)sudo apt-get install zlib1g-dev 
  (2)然后到源码目录的ext/zlib下 (刚才解压的ruby1.9.2目录)
  (3)ruby extconf.rb         (需要管理员权限)
  (4)make 
  (5)sudo make install

gem list 这个可以运行了
gem install ×× 也可以运行了

补充说明:
虽然设置了环境变量的path路径,还是要建立一下软链接,要不然 执行sudo ruby或者sudo gem时还是会报错:
sudo: ruby: command not found

所以还要建立以下软链接
sudo ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby 
sudo ln -s /usr/local/ruby/bin/gem /usr/bin/gem

然后执行 sudo gem -v 输出 1.3.7

三、安装rails3

运行了rails -v
bash: /usr/bin/rails:/usr/bin/ruby1.8:损坏的解释器: 没有该文件或目录

find了一下rails 发现/usr/lib/ruby/gems/1.8 目录下面有rails文件
/usr/bin/rails 便是运行时调用的rails
统统删除

执行命令 gem install rails 开始安装rails
安装完成以后运行 rails -v 没问题
但是sudo rails -v 就回提示没有这个命令
跟上面同理:sudo ln -s /usr/local/ruby/bin/rails /usr/bin/rails

sudo rails -v 也没问题了

四 其他问题

打开昨天的rails3+ruby1.8的项目,rake test出现错误
首先是一些gem的更新,造成的版本号不对应,修改之后,rake test
错误:Errors running test:units!
不知道什么错误

单独运行
rake test:units
!!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql', '2.8.1'
现看了下gem list,发现还没有安装mysql 这个gem

于是 安装 mysql 的gem
sudo gem install mysql

出错,堆栈异常如下:
------------------------------------------
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
	ERROR: Failed to build gem native extension.

/usr/local/ruby/bin/ruby extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/ruby/bin/ruby
	--with-mysql-config
	--without-mysql-config
	--with-mysql-dir
	--without-mysql-dir
	--with-mysql-include
	--without-mysql-include=${mysql-dir}/include
	--with-mysql-lib
	--without-mysql-lib=${mysql-dir}/lib
	--with-mysqlclientlib
	--without-mysqlclientlib
	--with-mlib
	--without-mlib
	--with-mysqlclientlib
	--without-mysqlclientlib
	--with-zlib
	--without-zlib
	--with-mysqlclientlib
	--without-mysqlclientlib
	--with-socketlib
	--without-socketlib
	--with-mysqlclientlib
	--without-mysqlclientlib
	--with-nsllib
	--without-nsllib
	--with-mysqlclientlib
	--without-mysqlclientlib
	--with-mygcclib
	--without-mygcclib
	--with-mysqlclientlib
	--without-mysqlclientlib


Gem files will remain installed in /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql-2.8.1 for inspection.
Results logged to /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

--------------------------------

没有安装下面这个造成的
apt-get install libmysqlclient-dev
sudo apt-get install libmysql-ruby libmysqlclient-dev


安装好这个,终于可以 gem install mysql了

再运行 rake test
再次出错
!!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql', '2.8.1'
再看,忘了把gem 'mysql','2.8.1' 这句话放到Gemfile文件

终于……
可以运行rake test了



分享到:
评论

相关推荐

    ruby-1.9.2-preview1-x64-mswin64-80.zip

    Ruby 1.9.2的发布进一步巩固了这个生态系统,鼓励开发者采用并贡献到这个语言中。 总的来说,"ruby-1.9.2-preview1-x64-mswin64-80.zip" 是一个为Windows 64位系统提供的Ruby开发环境,它带来了性能提升、语言增强...

    ruby on rails 3

    3. **ActiveRecord**:在Rails 3中,ActiveRecord提供了更好的数据库抽象,支持更多的SQL特性,如JOINs、子查询和窗口函数。同时,ActiveRecord查询接口(ARel)使得构建复杂的数据库查询更加直观。 4. **...

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

    ### Ruby的手动编译安装与升级方法 #### 引言 Ruby是一种动态、面向对象的脚本语言,常被用于Web开发。对于开发者而言,掌握Ruby的安装与配置至关重要。Ubuntu用户通常会依赖于包管理工具`apt-get`来安装Ruby,...

    Rake任务的宝石,可帮助您为Rails 3+应用程序找到未使用的路线和控制器动作-Ruby开发

    支持的版本¶↑Ruby 1.8.7、1.9.2、1.9.3、2.0、2.1、2.2、2.3、2.4、2.5、2.6、2.7、2.8(trunk)Rails 3.0.x,3.1.x,3.2.x, 4.0.x,4.1.x,5.0.x,5.1.x,5.2.x,6.0、6.1(主)安装¶↑将以下行放入Gemfile中:...

    centOS Rails3环境搭建

    根据安装过程中的提示,将以下内容添加到`/etc/httpd/conf/httpd.conf`文件中: ```conf LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.4/ext/apache2/mod_passenger.so ...

    ruby install

    3. **添加环境变量**:在安装过程中,记得勾选"Add Ruby executables to your PATH"选项,这样可以在命令行中直接运行Ruby命令。 4. **验证安装**:安装完成后,打开命令提示符,输入`ruby -v`,如果返回了Ruby ...

    ruby on rails基础知识

    ### Ruby on Rails基础知识详解 #### 一、Rails简介与安装 **Rails** 是一款流行的开源Web应用框架,基于Ruby语言编写。它强调简洁性、生产力和优雅的设计,非常适合快速开发Web应用。 - **特点** - **DRY (Don'...

    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.

    ruby192安装包

    Ruby是一种面向对象的、动态类型的编程语言,由日本开发者松本行...不过,值得注意的是,Ruby1.9.2已经是一个较旧的版本,对于新的项目,通常推荐使用更现代的版本,如Ruby2.7或更高,以获取最新的语言特性和安全更新。

    RVM配置ROR

    - 安装Ruby 1.8.7和Ruby 1.9.2版本,这两个版本是Rails 2.x和Rails 3.x分别推荐使用的。 - 安装Rails框架: - 对于Ruby 1.8.7,安装Rails 2.3.5。 - 对于Ruby 1.9.2,安装Rails 3.0.3。 5. **安装MySQL数据库...

    rails_入门详细笔记(官网翻译).

    这是因为早期版本如 1.8.7 可能存在 bug (例如 1.8.7-p248 和 1.8.7-p249),这些 bug 可能会导致 Rails 3 出现问题。 - **RubyGems**:这是一个 Ruby 的包管理工具,用于安装和管理 Ruby gem。 - **数据库**:Rails ...

    mobylette:Ruby on Rails的移动请求处理

    Mobylette 2.0+ deprecated the respond_to_mobile_requests method. ... 这个gem通过将“ mobile”格式添加到您的rails应用程序中来工作。 每当来自移动设备的请求发出时,如果您启用了控制器移动设备,则

    rubyinstaller-1.9.2

    rubyinstaller-1.9.2, ruby on rails

    govsgo, 用于玩棋盘游戏的Rails 3应用.zip

    govsgo, 用于玩棋盘游戏的Rails 3应用 转到 vs这是 govsgo.com的源代码,一个玩棋盘游戏的网站,与其他玩家或者对电脑进行在线游戏。如果你有问题或者建议,请将它们发布到问题跟踪程序。设置需要 ruby 1.9.2.如果...

    harmonyos2-cornerstone:更快上手!带有Rails3、MongoMapper(在MongoHQ上)、ENV-awareCM

    Rails3 MongoMapper(开启或关闭 MongoHQ) 设计 发送网格 充电 Sass(通过指南针) 摩卡 工厂女工 环境感知配置管理 大多数配置在 config/harmony.yml 您需要在 MongoHQ.com 上创建一个免费帐户,在 SendGrid.com ...

    omniauth-saml-esia:ESIA专用模块

    OmniAuth ESIA СтратегиядляавторизациивЕСИА要求 1.0+ Ruby 1.9.2用法在您的应用程序中将ESIA策略用作中间件: require 'omniauth'use OmniAuth :: Strategies :: ESIA , :assertion_...

Global site tag (gtag.js) - Google Analytics