【问题标题】:Rails Capistrano with wrong rbenv path?Rails Capistrano 的 rbenv 路径错误?
【发布时间】:2015-08-05 02:24:46
【问题描述】:

我尝试在 rails 应用上使用 Capistrano。 但我遇到了一些问题:当我运行cap production deploy:check 时,似乎还可以

只有错误信息:有关系吗?

DEBUG [a8c55ce2] Command: /usr/bin/env which passenger
DEBUG [a8c55ce2] Finished in 0.004 seconds with exit status 1 (failed).)

但是当我运行cap production deploy 时,会收到消息:

DEBUG [a71a7cfc] bash: /usr/local/rbenv/bin/rbenv: 没有这样的文件或 目录

我搜索我的服务器,我没有 /usr/local/rbenv/bin/rbenv。但我有/usr/local/rbenv,我可以使用rails 并为rails 应用程序部署网站,我怎样才能在/usr/local/rbenv/bin/rbenv 上找到正确的路径?或者是另一个问题?

这是我的设置:

lock '3.4.0'

`ssh-add` # need this to make key-forwarding work

set :application, 'myapp'
set :repo_url, 'my ssh'

set :deploy_to, '/home/john/projects/myapp'
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") 

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

我的文件夹

john@ip:/usr/local/rbenv$ ls -l
total 12
drwxr-xr-x 2 john admin 4096 Aug  5 16:44 shims
-rw-r--r-- 1 john admin    6 Aug  4 15:40 version
drwxr-xr-x 3 john admin 4096 Aug  4 15:33 versions

我发现我的插件有 3 条可能的路径:

/home/john/.rbenv/plugins/ruby-build/bin
/home/john/.rbenv/versions/2.2.2/bin
/home/john/.rbenv/bin

我认为是我的安装 rbenv 问题导致了这个路径问题。

【问题讨论】:

  • 请运行cd /usr/local/rbenv && ls -l 并将其输出添加到您的问题中。

标签: ruby-on-rails ruby-on-rails-4 capistrano


【解决方案1】:

确保正确包含和配置capistrano-rbenv gem

在您的 Gemfile 中:

group :development do
  gem 'capistrano-rbenv'
end

在您的 Capfile 中:

require 'capistrano/rbenv'

在 config/deploy.rb 中设置 rbenv 相关变量:

# I assume your plugins directory is at /usr/local/rbenv/plugins
#    shims directory at /usr/local/rbenv/shims
#    and so on ... Adapt the following to your situation

set :default_env, {
    path: '/usr/local/rbenv/plugins/ruby-build/bin:/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH',
    rbenv_root: '/usr/local/rbenv'
}
set :rbenv_roles, :all
set :rbenv_ruby, '2.2.2'
set :rbenv_ruby_dir, '/usr/local/rbenv/versions/2.2.2'
set :rbenv_custom_path, '/usr/local/rbenv'

【讨论】:

  • shims 目录在/usr/local/rbenv/shims,这个路径是对的!但是 /usr/local/rbenv/plugins 错了吗?无论如何我可以在我的服务器(ubuntu)中找到路径吗?我使用 find /plugins/ 并显示 find: `/plugins/': No such file or directory。我的 Gemfile 和 Capfile 都可以。
  • 您只需要适应您的配置并设置与您的服务器对应的路径
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2013-02-03
  • 2023-03-12
相关资源
最近更新 更多