Как установить MySQL в качестве базы данных по умолчанию в Rails 3?

Я начал использовать Rails 2 в апреле прошлого года, но остановился в июне этого года, потому что я думал, что изучить его, когда Rails 3 будет выпущен, было бы более практичным, так как многие из них были полностью реорганизованы и реструктурированы. Раньше я работал с Ubuntu 10.04 (с SQLite3 в качестве стандартного db), но теперь я использую Windows 7 и MySQL 5. Я уже установил адаптер gem для MySQL, но для его использования мне все еще нужно настроить database.yml. Спасибо.

Ответы

Ответ 1

Что касается конфигурации базы данных, то ничего не изменилось между 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, которая устанавливает, какой драйвер использовать.

Ответ 2

В ответе тадмана используйте gem 'mysql2' для рельсов 3, так как в rails 3 теперь используется новый адаптер mysql!!

Ответ 3

Вы можете изменить рельсы по умолчанию на MySql, когда вы создаете новое приложение, но вам нужно отредактировать строку в установке рельсов. Вам нужно будет внести изменения в каждую версию и каждый раз, когда вы обновляете рельсы gem.

Я использую Ruby-Enterprise. Итак, вот что я делаю:

В файле (где 1.8 - рубиновая версия и 3.0.4 - версия рельсов):

/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 настроены для gem mysql2):

rails new application_name

Предполагается, что у вас уже установлен правильный набор mysql2. Кроме того, я только делал это, так как Rails 3 вышел. Вероятно, это похоже на предыдущие версии. Опять же, каждый раз, когда вы обновляете Rails, вам нужно будет найти и отредактировать этот файл.

Ответ 4

Так как Rails 3.2 вы можете определить файл .railsrc с параметрами пользовательской командной строки, которые всегда будут применяться к rails new

Итак, если вы создадите файл с именем .railsrc и поместите его в свой домашний каталог с содержимым, подобным этому -d mysql, он сделает mysql вашей базой данных по умолчанию. Вы можете разместить любые параметры командной строки (в том числе шаблоны приложений, которые ужинают удивительно!)

Запустите rails new --help из командной строки, чтобы просмотреть все ваши параметры.