2013-09-19 2 views
6

Я развертываю приложение Rails 4 в Rackspace с помощью github и capistrano в течение нескольких недель. Все работало нормально, пока я, наконец, не сделал свой репозиторий приватным. Теперь, я получаю следующее сообщение об ошибке после запуска «колпачок развернуть»:Fatal: не удалось прочитать Имя пользователя для 'https://github.com': Нет такого устройства или адреса

«со смертельным исходом: не мог прочитать пароль для„https://[email protected]“: Нет такого устройства или адрес»

Ниже приведен код из моего deploy.rb файл

set :application, "appname" 
set :repository, "https://[email protected]/git_username/appname.git" 
set :scm, :git 
set :scm_username, "git_username" 
set :scm_passphrase, "git_password" 
set :scm_command, "git" 
set :keep_releases, 5 
set :branch, "master" 
set :rails_env, "production" 

set :deploy_to, "/var/www/doLocal" 

set :user, "deployer" 
set :password, "deployer_password" 
set :use_sudo, false 

ssh_options[:forward_agent] = true 

server "/path/to/server", :app, :web, :db, :primary => true 

after "deploy:restart", "deploy:cleanup" 


namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" 
    end 
end 

Я пробовал его с именем пользователя и без имени пользователя, приложенным к имени репозитория github. Если она есть, я получаю ошибку пароля сверху, но если его нет, я получаю следующее сообщение об ошибке:

«со смертельным исходом: не мог читать Имя пользователя для„https://github.com“: Нет такого устройства или адрес»

Подумайте, в чем проблема? Я предполагаю, что это имеет какое-то отношение ко мне, меняя в частный репозиторий. Я прочитал некоторые вещи об использовании ssh, но также не читал.

Любые предложения или помощь были бы высоко оценены!

+0

Не могли бы вы указать пользователя в https url: 'https: // user @ github.com/username/repo.git' – VonC

+0

Я попытался это сделать, но затем получил ту же ошибку, за исключением того, что пароль не может быть прочитайте – user2147143

ответ

16

Таким образом, я понял это. Чтобы использовать частное репо в Github для развертывания с использованием https, вам необходимо использовать API OAuth от Github. В разделе «Изменить профиль» в вашей учетной записи github щелкните приложения, а затем сгенерируйте токен OAuth. Затем снабдите ваш маркер URL вашего репо, как так:

set :repository, "https://<OAuthToken>@github.com/username/application.git" 

После этого я смог запустить

cap deploy 

и развернуть мое приложение на мой удаленный сервер.

+1

Это безопасный способ сделать это с помощью OAuthToken в файле на сервере? Благодаря! – daveomcd

0

fatal: could not read Username for 'https://github.com': No such device or address"

Проверьте githubusername первый же ваш scm user такой же, как сервер user в коде?

Ваш код

set :scm_user, "user" 
set :user, "user" 

Это должно быть

set :user, "deployer" # The server's user for deploys 
set :scm_user, "ram" # The github username 

также установить парольную фразу

set :scm_passphrase, "[email protected]" # The deploy user's password 

Теперь репозиторий case..As за я думаю, что вы настройки хранилища должны быть

set :repository, "[email protected]:username/repo.git" # Your clone URL 

Также

set :ssh_options, { :forward_agent => true } 
+0

Спасибо за ваш ответ! Я пробовал все это, но это не сработало. У меня не было правильного имени пользователя, как вы пояснили выше, но изменение хранилища привело к тому, что capistrano не смог найти репозиторий, и он сказал: «Permission denied (publickey)). fatal: Не удалось прочитать из удаленного репозитория. ' – user2147143

13

Сообщение об ошибке является общей ошибкой git, хотя сам вопрос является специфичным для Ruby.

Так что для всех, кто приземлился здесь, вот non-rails ответ: недостающее устройство на самом деле является консолью.

  1. Вы пытались выполнить аутентификацию не интерактивно (т. Е. Используя ключ SSH). Это не удалось.
  2. В качестве резервной копии git попытался предложить пользователю ввести имя пользователя, но это не работает, поскольку интерактивная консоль недоступна.

Исправить # 1, поскольку вы, вероятно, не хотите, чтобы интерактивно выполнялась аутентификация во время развертывания. В моем случае это была проблема github oauth.

Смежные вопросы