según la sugerencia de soporte técnico Heroku, la forma más sencilla de hacerlo es poniendo el nombre de usuario y una contraseña en la URL, como en el básico de autenticación HTTP, por ejemplo,
gem 'my_gem', :git => 'https://my_username:[email protected]/my_github_account/my_repo.git', :ref => 'revision_no'
Esto funcionó para nosotros. Esto todavía es algo insatisfactorio, ya que tuvimos que poner una contraseña en el Gemfile. Nos ocupamos de esto agregando una nueva cuenta de usuario github y agregando esa cuenta como colaborador en el proyecto gem. Todavía no es una seguridad infalible, pero el impacto es más estrecho.
Otras opciones que he leído son set up your own gem server o vendor the gem.
Actualización 5/16/2012: Otra manera de moverse por poner la contraseña en el Gemfile
es poner la contraseña en una variable de entorno; Heroku de hacer esto con heroku config:add VAR=value
, y luego en el Gemfile
tendrá que utilizar esta variable, por ejemplo .:
gem 'my_gem',
:git => "https://#{ENV['var_private_gem_username']}:#{ENV['var_private_gem_password']}@github.com/my_github_account.git",
:ref => 'rev'
Este es el estándar en Heroku para evitar poner contraseñas, claves de la API y las credenciales en el código. Para el desarrollo/prueba local, puede establecer estas variables de entorno. O bien, suponiendo que su máquina de desarrollo está configurada para el acceso SSH a github, no necesitará las credenciales para el desarrollo local (las credenciales de SSH ya estarán en efecto). De modo que podría configurar alguna lógica condicional:
private_repo_credentials = %w(var_private_gem_username var_private_gem_password).
map { |var| ENV[var] }.compact.join(':')
private_repo_credentials << '@' unless private_repo_credentials.empty?
# private_repo_credentials will be "" if neither var is set
# private_repo_credentials will be "username:[email protected]" if they are set
gem 'my_gem',
:git => "https://#{private_repo_credentials}github.com/my_github_account.git",
:ref => 'rev'
No he probado esta última parte. Por favor, brinde sus comentarios.
Para que el enfoque ENV funcione, tendrá que habilitar un complemento de laboratorios: 'heroku labs: enable user_env_compile'. Lamentablemente, todavía hay problemas con la coincidencia de Gemfile.lock. –
Gracias por los comentarios. –
También podría considerar usar Gemfury https://devcenter.heroku.com/articles/gemfury – Schneems