安装Rails,MySQL等一切都出错了

时间:2010-12-27 03:52:05

标签: mysql ruby-on-rails ruby

我一直在努力奋斗几个小时。一切都停止了工作,我不能让它继续工作。我是Ruby,Ruby on Rails和终端的通道。这真让我感到沮丧所以我只是尽量详细描述我的问题,希望有人能给我一个解决方案。

我在Mac OS X Snow Leopard上。我现在无法让Rails工作:Could not find gem 'rails' headaches

但经过一些重新安装尝试后,它突然再次起作用。但现在我无法让MySQL工作,有时甚至会再次破坏Rails安装。

这就是我的所作所为:

sudo gem uninstall rails
sudo gem uninstall mysql
sudo gem uninstall mysql2

在这些命令之后,我用gem list检查已安装的宝石。没有列出MySQL gem,但我仍然可以看到rails (2.3.5, 2.2.2, 1.2.6) 。这是正常的吗?这是否意味着我有3个Rails安装?这对我来说没有意义。无论如何,我这样做:

sudo gem clean

完全失败了。我得到了一堆这样的错误:

  

试图卸载fcgi-0.8.7
  无法卸载fcgi-0.8.7:
      Gem :: InstallError:无法卸载,请检查gem list -d fcgi

它不会卸载任何东西。此时,我尝试再次安装所有内容。我从:

开始
sudo gem install rails

成功(我认为):

  

成功安装rails-3.0.3
  已成功安装builder-2.1.2
  安装了2颗宝石   为rails-3.0.3安装ri文档...
  找不到文件:lib

然后,我更新了RubyGems:

sudo gem update --system
sudo gem install rubygems-update
sudo update_rubygems

然后它说我安装了1.3.7,所以它成功了,我想。所以现在我继续安装MySQL。我已经在我的机器上安装了MySQL 5.5.8。我做了一些关于在Snow Leopard上安装MySQL的研究,似乎我必须使用这个命令:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我收到一堆这样的错误:

  

没有time_set_neg的定义
  没有time_set_second_part的定义
  没有time_equal的定义
  没有error_errno的定义

此时,我假设我安装了Rails和MySQL gem,所以我尝试启动一个新项目。

rails new user_group -d mysql

有效! Rails安装正确。现在,我尝试生成一个模型。

cd user_group
rails generate model User

失败并出现此错误:

  

无法在Gemfile中列出的任何gem源中找到gem'mysql2(> = 0,runtime)'。
  尝试运行bundle install

所以我尝试运行bundle install。它安装了很多宝石。然后我尝试再次生成我的模型。我收到这个错误:

  

Library / Ruby / Gems / 1.8 / gems / mysql2-0.2.6 / lib / mysql2 / mysql2.bundle:dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/ mysql2.bundle,9):未加载库:libmysqlclient.16.dylib(LoadError)
    参考自:/ Library / Ruby / Gems / 1.8 / gems / mysql2-0.2.6 / lib / mysql2 / mysql2.bundle
    原因:找不到图像 - / Library / Ruby /Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

这是我能得到的。我该怎么办?为什么要这么难......

2 个答案:

答案 0 :(得分:5)

Snow Leopard提供Ruby 1.8.7。 Ruby 1.8.7不会自动将require 'rubygems'命令添加到Ruby脚本中,就像1.9.2一样,因此通常需要将其添加到脚本中。这解决了Ruby在很多情况下没有找到代码调用的宝石的问题。 Rails是一个不同的动物,但1.8.7的版本已有详细记录,所以你应该很快找到修复。

Snow Leopard提供的Ruby非常适合自己使用。用户可以依赖它,但它由Apple安装,因为它们有应用程序使用它。使用locate podcast | grep rb$查看。同样,Snow Leopard中的Perl和Python用于支持Apple安装的代码,因此搞乱它们并不是一个好主意。更改内置的Ruby,Perl或Python通常不会导致系统在火焰中爆炸,但是当系统维护例程停止工作时,它可能会导致更加恼人和无法解释的问题。

通过使用sudo删除Apple安装的gem并添加新的gem,就Apple的应用程序而言,您已将系统Ruby置于意外状态。您应该使用Fink或MacPorts,或者从源代码或使用RVM安装单独的Ruby供您自己使用,而不是使用Apple的Ruby。

就个人而言,我使用RVM因为它在您的主目录中创建了一个~/.rvm沙箱,并且可以轻松管理多个版本的Ruby和gem。 RVM要求您安装XCode开发库,可以在免费注册后从http://developer.apple.com/technologies/下载。 XCode也在您的系统DVD上,但据报道该版本有问题,因此请使用下载的版本。

答案 1 :(得分:0)

确保使用以下代码将MySql gem添加到该项目gemfile:

  gem 'mysql', '2.8.1' 

运行bundle install / update并尝试它。你告诉它使用MySQL,甚至可能安装了gem,但是你没有加载它。

另外,你有几点失败:注意

File not found: lib

然后,我可能完全错了 - 这是我尝试为您的故障排除提供线索。