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

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

在数据库配置方面,除了如何加载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声明行,用于设置要使用的驱动程序。

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

生成新应用程序时,可以将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时,您都必须查找并编辑该文件。

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

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

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