Я занимаюсь разработкой Rails v2.3 приложение с MySQL базы данных и mysql2
драгоценный камень. Я столкнулся с странной ситуацией, которая составляет около изменение окружающей среды в rake задача.изменения окружающей среды в передней задаче
(все мои настройки и конфигурация для окружающей среды и баз данных не корректны, никаких проблем для этого.)
Вот моя простая история:
У меня есть задача грабли, как следующее:
namespace :db do
task :do_something => :environment do
#1. run under 'development' environment
my_helper.run_under_development_env
#2. change to 'custom' environment
RAILS_ENV='custom'
Rake::Task['db:create']
Rake::Task['db:migrate']
#3. change back to 'development' environment
RAILS_ENV='development'
#4. But it still run in 'customer' environment, why?
my_helper.run_under_development_env
end
end
грабли задача довольно проста, что она делает это:
1. Во-первых, запустить метод из my_helper
под "развития" среды
2. Тогда изменение "пользовательских" окружающей среды и не запускать db:create
и db:migrate
до сих пор, все хорошо, среда же изменится на «обычая»
3. Затем измените его обратно в «развитие» среда
4. запустить вспомогательный метод снова под «развития» окружающая среда
Но, хотя я изменил окружающую среду обратно «развития» на шаге 3, последний метод все еще работает в «custom« окружающая среда, почему? и как избавиться от него?
--- P.S. ---
Я также проверил почту related with environment change here, и пытался использовать решение там (на шаге 2):
#2. change to 'custom' database
ActiveRecord::Base.establish_connection('custom')
Rake::Task['db:create']
Rake::Task['db:migrate']
изменить соединение с базой данных, а не изменения окружающей среды, но, то db:create
и db:migrate
все равно будет работать под «development», хотя связанный пост сказал, что он должен работать для «custom» database ...странно
--------------- важное обновление ---------------------
I просто понять, что код на шаге 2:
#2. change to 'custom' environment
RAILS_ENV='custom'
Rake::Task['db:create']
Rake::Task['db:migrate']
он изменяет среду в «пользовательских» только еслиRake::Task['db:create']
дозвонились, если я закомментировать Rake::Task['db:create']
линию, код будет работать под "развития ':
#2. change to 'custom' environment
RAILS_ENV='custom'
#Rake::Task['db:create']
#CODE WILL RUN STILL UNDER 'development' environment.
Почему Rake::Task['db:create']
влияет на изменение окружающей среды в моем случае ...?