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ść?
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
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
execute "ALTER DATABASE "+database+" CHARACTER SET utf8 COLLATE utf8_polish_ci"
Dzięki za pomoc :]
U mnie w Rails3 zadziałało to
Rails.application.config.database_configuration[RAILS_ENV]["database"]