0
我正在尝试编写一个Capistrano任务,将“部署”一个我写给陪伴Rails项目的私人宝石。Capistrano任务git克隆私人宝石
在config/deploy.rb
after :updating, :retrieve_my_gem
文件lib/capistrano/tasks/retrieve_my_gem.rake
包含...
desc 'Clones my_gem from Github to vendor/git'
task :retrieve_my_gem do
on roles(:app), in: :sequence do
# Create the directory that will contain my gem
gem_container_path = release_path.join('vendor/git')
debug "Gem container path: #{gem_container_path}"
if test "[ ! -d #{gem_container_path} ]"
info "Creating local gem directory"
execute 'mkdir', '-p', gem_container_path
end
gem_path = release_path.join('vendor/git/my_gem')
debug "Gem path: #{gem_path}"
if test "[ ! -d #{gem_path} ]"
within gem_container_path do
info "Cloning my gem to #{gem_path}"
execute 'git clone [email protected]:username/my_gem.git', gem_path
end
else
within gem_path do
info "Updating my gem in #{gem_path}"
execute 'git pull'
end
end
end
end
而且Gemfile
有...
gem 'my_gem', :path => 'vendor/git/my_gem/'
当我跑我的部署任务,该gem_container_path
是创建但它克隆回购将转换为〜/ my_gem而不是转换成gem_container_path
。由于未在Gemfile中指示'vendor/git/my_gem /'中找到'my_gem',因此尝试bundle install
时部署任务继续并失败。
我期待克隆回购到/ var/www/project/releases/*/vendor/git/my_gem的任务,其中*替换为Capistrano为生成的DateTime戳记,此版本。
为什么Capistrano将repo克隆到我的远程用户的主目录而不是指定的路径?
出于好奇?你能显示'gem_path'的调试输出是什么? (仅供参考,您有'debug'行错误。'debug“Gem path:#{gem_container_path}”') – ptierno
@PeteyT gem_path是'/ var/www/project/releases/20150112224830/vendor/git/my_gem' – whargrove
whats使用'git @ github.username/my_gem.git';不应该读取'[email protected]:username/my_gem.git'?试图在这里消除错字。 – ptierno