Capistrano - написать файл database.yml - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь написать сценарий развертывания capistrano для установки учетных данных базы данных с помощью пользовательского ввода.

В моем файле развертывания:

after "deploy:update_code", "db:write_credentials"
namespace :db do
task :write_credentials do
    @username = Capistrano::CLI.password_prompt('mysql_username: ')
    @password = Capistrano::CLI.password_prompt('mysql_password: ')
    @config = YAML::load(File.open("#{current_path}/config/database.yml"))['production']
    @config["username"] = @username
    @config["password"] = @password
  end
end

После запуска 'cap deploy' и ввода имени пользователяи пароль сценария завершается ошибкой с сообщением «Нет такого файла или каталога - /var/www/rails_app/current/config/database.yml (Errno :: ENOENT)».

Файл по этому пути существует всервер, у меня также есть в моем git-репо.

Я не могу понять, почему файл не может быть найден.Есть намеки?

1 Ответ

1 голос
/ 08 сентября 2011

Yaml::load выполняется локально на вашем компьютере, с которого вы запускаете cap deploy, поэтому этот файл не найден, он не ищется удаленно.

Посмотрите на этот камень: capistrano-recipes , если вы хотите, вы можете использовать это.В противном случае, чтобы узнать, как они делают здесь

Для полноты здесь, как вы можете прочитать удаленный файл в рецепте шапки

file = capture "cat #{shared_path}/config/database.yml"

capture выполнит команду remote и вернет ее вывод в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...