2011-05-02 121 views
1

我正在尝试为MySQL安装Ruby GEM。我对Ruby很新。如何正确安装MySQL Ruby Gem

我安装了RVM和Bundler。我应该通过Bundler还是RVM安装gem?

什么是实际的命令这样做是否正确?

+0

你应该接受的答案(左边打勾) – apneadiving 2011-05-02 20:57:29

回答

2

一旦你进入你的应用程序目录,并且在Srdjan提到的创建gemset之后,你有两种选择。无论是运行:

gem install mysql 

或该行添加到您的Gemfile:

gem 'mysql' 

一旦你添加了该行对你的Gemfile,运行:

bundle install 

编辑

你必须通过database.yml文件为您的每个环境配置数据库(dev应用,分期和生产)。这应该是这样的:

development: 
    adapter: mysql 
    database: name_of_your_database 
    encoding: utf8 
    host: localhost 
    username: root (replace with the actual username) 
    password: root (replace with the actual password) 

一旦你的设置,你可以添加migrations将表添加到您的数据库。如果这是一个遗留数据库,则可能需要从中生成一些模型。为了做到这一点,你可以使用legacy_database宝石。

你不必自己处理到数据库的连接,Rails会为你做。要访问您的表格并查询它们,您可以使用ActiveRecord方法。

例如,假设你有一个名为users表,你需要找到ID的用户,你可以这样做:

user = User.find(id) 

阅读documentation获得使用Active Record的查询运行。

+0

@Amokrane我用你的选项#1,我得到的宝石出现在我的环境中,但是当我尝试这样做需要我的Ruby代码中的'mysql'时,我仍然得到一个错误,它不能识别mysql。任何想法为什么? – GeekedOut 2011-05-02 21:05:32

+0

@GeekedOut你究竟想要做什么?一旦宝石安装好了,你就不需要自己去做,它已经在你的引擎盖下完成了!我想你需要使用它作为你的database.yml文件中的适配器!适配器:mysql类似的东西... – 2011-05-02 21:27:09

+0

@Amokrane我想要在控制器中的MySQL gem,所以我可以连接到数据库。我尝试做这样的事情:require'mysql' - 或者我应该通过database.yml文件来做到这一点?如果是这样,我该如何显式连接/从服务器代码查询数据库? - 谢谢! – GeekedOut 2011-05-02 21:37:41

4

由于您安装了RVM,请为您的应用程序创建一个gemset。这将只隔离该应用程序的宝石,而不会影响系统的其他部分。

rvm gemset create appname && rvm gemset use appname 

一旦你这样做了,手动或通过捆绑器安装没有sudo的gems,确保隔离。

+0

我会投你了,但它需要我有15点声望笑:) – GeekedOut 2011-05-02 20:50:47

+0

谢谢,我做你的命令。现在我怎样才能让MySQL GEM进入这个gemset? - 谢谢! – GeekedOut 2011-05-02 20:52:36

+0

@GeekedOut,一旦创建了gemset,通过命令行或捆绑器完成的任何gem安装都会自动将其添加到gemset。至于怎么做,请按照下面的@ Amokrane的回答。 – 2011-05-02 21:04:46

2

要获得MySQL安装并运行你需要几件事情:安装MySQL和Ruby的

    • 的开发头工作mysql_configmysql_config5二进制
    • gem 'mysql'Gemfile
    • 上市

    一旦你掌握了所有这些,它应该很好地使用常规:

    bundle install 
    
  • +0

    谢谢!你是什​​么意思“为MySQL和Ruby安装开发头文件?” - 这会带来什么变化?除此之外,我已经安装并运行了MySQL。 – GeekedOut 2011-05-02 21:10:04

    +0

    某些系统只提供运行所需的二进制文件,但不包括头文件,这是编译扩展和驱动程序所必需的。在一些发行版中,这是在单独的,可选的'-devel'包中提供的。 – tadman 2011-05-03 15:10:30