我正在尝试将1次部署到服务器(cap deploy:cold),并且它一直要求我安装gem。只举一个例子:
*** [err :: ip-address] Could not find net-ssh-2.3.0 in any of the sources
我有什么能够安装一次拍摄所需的所有宝石吗?
这是我的deploy.rb文件和gemfile:
deploy.rb
set :application, "myapp"
set :repository, "repo goes here"
set :scm, :git
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
role :web, "ipaddress" # Your HTTP server, Apache/etc
role :app, "ipaddress" # This may be the same as your `Web` server
role :db, "ipaddress", :primary => true # This is where Rails migrations will run
# role :db, "your slave db-server here"
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
set :deploy_to, "/home/deploy/#{application}"
set :rails_env, 'production'
set :branch, "master"
set :scm, :git
set :user, "user"
set :runner, "user"
# ssh_options[:port] = 2232
set :use_sudo, false
set :normalize_asset_timestamps, false
# If you are using Passenger mod_rails uncomment this:
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
namespace :bundler do
task :create_symlink, :roles => :app do
shared_dir = File.join(shared_path, 'bundle')
release_dir = File.join(current_release, '.bundle')
run("mkdir -p #{shared_dir} && ln -s #{shared_dir} #{release_dir}")
end
task :bundle_new_release, :roles => :app do
bundler.create_symlink
run "cd #{release_path} && bundle install --without test"
end
task :lock, :roles => :app do
run "cd #{current_release} && bundle lock;"
end
task :unlock, :roles => :app do
run "cd #{current_release} && bundle unlock;"
end
end
after "deploy", "deploy:cleanup"
namespace :deploy do
desc "Restarting mod_rails with restart.txt"
task :restart, :roles => :app, :except => { :no_release => true } do
run "touch #{current_path}/tmp/restart.txt"
end
[:start, :stop].each do |t|
desc "#{t} task is a no-op with mod_rails"
task t, :roles => :domain do ; end
end
end
task :after_update_code do
run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
end
的Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.1.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'json'
gem 'rake', '0.9.2.2'
gem 'mysql2'
gem 'capistrano'
gem 'therubyracer'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.1.5'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug'
答案 0 :(得分:1)
也许你改变这一行
run "cd #{release_path} && bundle install --without test"
到
run "cd #{release_path} && bundle install --path=you_gem_path --without #{bundle_without.join(' ')}"
您可以通过运行
找到您的宝石路径$ echo $GEM_PATH
你还必须设置bundle_without 你可以在文件的开头设置它
set :bundle_without, [:development, :test]
答案 1 :(得分:0)
尝试将此添加到您的deploy.rb
set :bundle_without, [:development, :test]
require 'bundler/capistrano'