Подтвердить что ты не робот

Наилучшая практика внедрения базы данных.

Я не проверяю свой файл database.yml в исходном элементе управления, и мне было интересно, что другие делают/лучше всего используют для копирования этого файла на сервер при развертывании.

Я использую Capistrano для развертывания.

4b9b3361

Ответ 1

В настоящее время я сохраняю общую папку с именем 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

Ответ 2

Мое развертывание 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

Ответ 3

Я довольно долго бил головой об этом, и выяснил более легкое решение для 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

Надеюсь, что это поможет другим. Сегодня я действительно бил головой о стену.