繁体   English   中英

Capistrano无法找到Gemfile或.bundle /目录?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM