Migracja ze zmienną nazwą bazy danych

Mam migrację która między innymi wywołuje

execute 'ALTER DATABASE baza_danych CHARACTER SET utf8 COLLATE utf8_polish_ci'

Chciałbym żeby to polecenie wykonało się na bazie używanej w danej aplikacji. Istnieje taka możliwość?

Nie wiem, czy dobrze rozumiem pytanie, ale jeśli chcesz po prostu wykonać sqla raz, to robisz

rake dbconsole [enviroment] np. rake dbconsole production
i tam masz dostep do konsoli sqlowej. Tam wklejasz sam środek stringa dodając średnik:

ALTER DATABASE baza_danych CHARACTER SET utf8 COLLATE utf8_polish_ci;

i już.

Możesz wyciągnąć nazwę bazy danych z konfiguracji aplikacji:

Rails::Application::Configuration

[quote=nagl]Możesz wyciągnąć nazwę bazy danych z konfiguracji aplikacji:

Rails::Application::Configuration

[/quote]
A można jaśniej? Bo wrzuciłem to do pliku z migracją to mu nie pasuje i mówi że:

uninitialized constant Rails::Application

:frowning:

Okej. Znalazłem coś takiego:

config = Rails::Configuration.new host = config.database_configuration[RAILS_ENV]["host"] database = config.database_configuration[RAILS_ENV]["database"] username = config.database_configuration[RAILS_ENV]["username"] password = config.database_configuration[RAILS_ENV]["password"]
To rozwiązało mój problem :wink:

execute "ALTER DATABASE "+database+"  CHARACTER SET utf8 COLLATE utf8_polish_ci"

Dzięki za pomoc :]

U mnie w Rails3 zadziałało to :slight_smile:

Rails.application.config.database_configuration[RAILS_ENV]["database"]