我一直在努力奋斗几个小时。一切都停止了工作,我不能让它继续工作。我是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
这是我能得到的。我该怎么办?为什么要这么难......
答案 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
然后,我可能完全错了 - 这是我尝试为您的故障排除提供线索。