Я не проверяю свой файл database.yml в исходном элементе управления, и мне было интересно, что другие делают/лучше всего используют для копирования этого файла на сервер при развертывании.
Я использую Capistrano для развертывания.
Я не проверяю свой файл database.yml в исходном элементе управления, и мне было интересно, что другие делают/лучше всего используют для копирования этого файла на сервер при развертывании.
Я использую Capistrano для развертывания.
В настоящее время я сохраняю общую папку с именем shared, которая живет за пределами моего deply_to dirs. Я держу свой файл database.yml и другие файлы конфигурации там, и у вас есть крючок в кепке, чтобы скомпилировать их во время развертывания. Вот моя простая задача для копирования:
after "deploy:update_code","deploy:config_symlink"
namespace :deploy do
task :config_symlink do
run "cp #{shared_path}/../../shared/database.yml #{release_path}/config/database.yml"
end
end
Мое развертывание script прерывалось с помощью after "deploy:update_code"
, потому что этот шаг, похоже, уже пытался получить доступ к базе данных. Поэтому я:
before "deploy:assets:precompile", 'deploy:symlink_shared'
namespace :deploy do
task :symlink_shared do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
end
end
Я довольно долго бил головой об этом, и выяснил более легкое решение для Capistrano 3. Надеюсь, это поможет тем, кто там.
Я не мог на всю жизнь получить команды "запустить" или "выполнить" для работы в моем файле deploy.rb. Как оказалось, в Capistrano 3 вы должны поместить свой файл database.yml под папку deploy_directory/shared. Затем в файле deploy.rb включите файл в переменную linked_files, и он автоматически будет привязан к одному и тому же пути во время развертывания.
Вот пример:
Во-первых, у меня нет базы данных .yml, проверенной в исходном элементе управления. Моя база данных .yml находится здесь на рабочем сервере:
вар/WWW/MyApp/общий/конфигурации/database.yml
В моей версии deployment.rb я добавил эту строку
set :linked_files, %w{config/database.yml}
Во время развертывания capistrano автоматически символизирует файл:
вар/WWW/MyApp/ток/конфигурации/database.yml
Надеюсь, что это поможет другим. Сегодня я действительно бил головой о стену.