如何在Rails 3中将MySQL设置为默认数据库?

13

去年四月份我开始使用Rails 2,但在六月份停止了,因为我认为学习Rails 3更实际,因为很多代码都进行了重构和重组。我之前使用Ubuntu 10.04(默认数据库是SQLite3),但现在我使用的是Windows 7和MySQL 5。我已经安装了适用于MySQL的gem适配器,但仍需要调整database.yml才能使用它。谢谢。

4个回答

25

就数据库配置而言,Rails 2 和 3之间没有太多变化,除了你加载MySQL驱动程序的方式。以前是在config/environment.rb中完成,现在则是在Gemfile中完成:

gem 'mysql'

默认的config/database.yml文件配置为SQLite,但是你可以轻松地将其更改为MySQL。一个通用的版本如下:

defaults: &defaults
  adapter: mysql
  username: localdev
  password: mylocaldevpasswordwhateveritis
  host: localhost

development:
  <<: *defaults
  database: project_dev

test:
  <<: *defaults
  database: project_test

就是 adapter 声明行设置了使用哪个驱动程序。


有没有办法将mysql设为默认数据库,而不是sqlite? - Jason Noble
对于新项目来说,这并不容易。这是Rails的核心功能。通常人们会为他们的新应用程序准备一个“骨架”项目,根据需要进行定制,包括数据库驱动程序、插件和宝石等设置,然后将其克隆到新项目中。这样你就可以拥有任何你喜欢的默认值,无论多么奇特。 - tadman
谢谢。所以我不能将其设置为新项目的默认值。 - arscariosus
8
你可以在rails new命令中传递参数--database=mysql(或者在shell中创建别名 - 如果在Windows系统上,也许需要将该命令包装在cmd脚本中)。此外,你也可以创建一个应用程序模板:http://railscasts.com/episodes/148-app-templates-in-rails-2-3。 - Brian

7
在tadman的回答中,对于Rails 3,请使用gem 'mysql2',因为Rails 3现在使用新的MySQL适配器!!

另外,在 database.yml 中将 'adapter: mysql' 改为 'adapter: mysql2'。 - Rick Smith

3
你可以在生成新的应用程序时将Rails更改为默认使用MySql,但是你需要编辑Rails安装中的一行。您必须对每个版本进行更改,并且每次更新rails gem时都要进行更改。
我使用Ruby-Enterprise。所以这是我做的事情:
在文件中(其中1.8是ruby版本,3.0.4是rails版本):
/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/railties-3.0.4/lib/rails/generators/rails/app/app_generator.rb

编辑:在rails-3.1.0-rc1中,该文件为:

gems/railties-3.1.0.rc1/lib/rails/generators/app_base.rb

寻找此行:

class_option :database, :type => :string, :aliases => "-d", :default => "sqlite3",

将“sqlite3”更改为“mysql”。

class_option :database, :type => :string, :aliases => "-d", :default => "mysql",

因此,我们不应该这样做:

rails new application_name -d mysql

我可以执行以下操作(且database.yml和Gemfiles已配置为mysql2 gem):

rails new application_name

假设您已经安装了正确的mysql2 gem。此外,自Rails 3推出以来,我一直在这样做。对于之前的版本可能类似。同样,每次更新Rails时,您都需要找到并编辑该文件。


1
我正在使用带有Ruby 1.9.2和Rails 3的RVM,对于我来说,文件路径可以在以下位置找到:$(rvm gemdir)/gems/railties-3.0.5/lib/rails/generators/rails/app/app_generator.rb。这些指令完美无缺。 - gunit888

0

自Rails 3.2以来,您可以定义一个名为.railsrc的文件,并使用自定义命令行选项,这些选项将始终适用于rails new。

因此,如果您创建一个名为.railsrc的文件,并将其放在主目录中,并将其内容设置为-d mysql,它将使mysql成为您的默认数据库。您可以在其中放置任何命令行选项(包括应用程序模板,这些模板非常棒!)

从命令行运行rails new --help以查看所有选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接