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

时间:2010-09-01 11:36:01

标签: mysql ruby-on-rails ruby windows-7

我去年四月开始使用Rails 2,但今年六月停止了,因为我认为在Rails 3发布时学习它会更实用,因为很多都是完全重构和重组的。我曾经使用Ubuntu 10.04(使用SQLite3作为默认数据库),但现在我使用的是Windows 7和MySQL 5.我已经安装了适用于MySQL的gem适配器,但要使用它我还需要调整database.yml。感谢。

4 个答案:

答案 0 :(得分:25)

就数据库配置而言,除了如何加载MySQL驱动程序之外,Rails 2和3之间几乎没有什么变化。以前这是在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声明行设置要使用的驱动程序。

答案 1 :(得分:7)

在tadman的回答中,使用gem'mysql2'作为rails 3,因为rails 3现在使用新的mysql适配器!!

答案 2 :(得分: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

我可以做(并且为mysql2 gem配置了database.yml和Gemfiles):

rails new application_name

这假设您已经安装了正确的mysql2 gem。此外,自从Rails 3问世以来,我才这样做。它可能与以前的版本类似。同样,每次更新Rails时,您都必须查找并编辑该文件。

答案 3 :(得分:0)

从Rails 3.2开始,您可以使用自定义命令行选项定义.railsrc文件,该选项将始终应用于rails new

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

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