Как установить 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
из командной строки, чтобы просмотреть все ваши параметры.