[英]Capistrano Could not locate Gemfile or .bundle/ directory?
我嘗試在Ubuntu服務器上的rails應用程序中使用Capistrano ,然后運行cap production deploy得到以下消息:
Could not locate Gemfile or .bundle/ directory
這是我的設置:
lock '3.4.0'
`ssh-add` # need this to make key-forwarding work
set :application, 'beaconserver'
set :repo_url, 'my git'
set :deploy_to, '/home/john/projects/beaconserver'
set :log_level, :debug
set :keep_releases, 5
set :linked_files, %w(config/database.yml config/secrets.yml)
set :linked_dirs, fetch(:linked_dirs, []).push("bin", "log", "tmp/pids", "tmp/cache", "tmp/sockets", "vendor/bundle", "public/system")
# rbenv 的設定
set :rbenv_type, :user
set :rbenv_ruby, "2.2.2"
set :rbenv_path, "/usr/local/rbenv"
set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
set :rbenv_map_bins, %w(rake gem bundle ruby rails)
set :rbenv_roles, :all
namespace :deploy do
after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
execute :rake, 'cache:clear'
end
end
end
我在設置中發現了一個問題:
set :rbenv_path, "/usr/local/rbenv"
set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
但我的服務器不存在/ usr / local / rbenv / bin / rbenv
並且存在/ usr / local / rbenv / bin ,我輸入ls -al並顯示:
drwxr-xr-x 2 root root 4096 Aug 6 08:50 .
drwxrwxrwx 11 root root 4096 Aug 6 09:03 ..
lrwxrwxrwx 1 root root 16 Aug 6 08:50 rbenv -> ../libexec/rbenv
-rwxr-xr-x 1 root root 724 Aug 6 08:50 ruby-local-exec
這是什么意思? 這是否意味着我將/ usr / local / rbenv / bin / rbenv的位置更改為../libexec/rbenv ? 也許我在安裝rbenv時做錯了什么,該如何解決?
我的gemfile:
gem "capistrano", '3.4.0'
gem "capistrano-rvm", '0.1.2'
gem "capistrano-rbenv", '2.0.3', require: false # production server use rbenv
gem "capistrano-rails", '1.1.3'
gem 'capistrano-passenger', '0.1.1'
gem 'capistrano-bundler','1.1.4'
capfile:
require 'capistrano/rails'
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/assets'assets:precompile
require 'capistrano/rails/migrations'
require 'capistrano/passenger'
我認為您應該在清除緩存任務上添加執行路徑。
在:clear_cache
上嘗試一下:
namespace :deploy do
after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
within current_path do
execute :rake, 'tmp:cache:clear'
end
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.